使用setUbiquitous为UIDocument文件关闭iCloud同步时出错(LibrarianErrorDomain错误2)

时间:2011-12-17 21:53:20

标签: ios ios5 icloud

当我尝试关闭UIDocument文件的iCloud同步时,我遇到了错误。想知道是否有其他人遇到过这种情况。这是场景:

我在应用程序沙箱中本地创建一个UIDocument文件,然后进行以下调用以开始将文件与iCloud同步:

[[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:localPathURL destinationURL:cloudPathURL error:&error];

一切都在游动。

现在我想停止iCloud同步这个文件。

我首先通过调用以下内容确保该文件至少与iCloud同步:

- (BOOL) isDataFileSyncedWithCloud
{
    if (![self isICloudSupported] || ![self isUsingICloudForFiles])
        return NO;

    NSURL* file = [self getFileURLToCloudDatafile];
    NSNumber*  isInCloudNum = nil;

    if ([file getResourceValue:&isInCloudNum forKey:NSURLIsUbiquitousItemKey error:nil])
    {
        // If the item is in iCloud, see if it is downloaded and uploaded.
        if ([isInCloudNum boolValue])
        {
            NSNumber*  isDownloadedNum = nil;
            if ([file getResourceValue:&isDownloadedNum forKey:NSURLUbiquitousItemIsDownloadedKey error:nil])
            {
                NSNumber* isUploadedNum = nil;
                if ([file getResourceValue:&isUploadedNum forKey:NSURLUbiquitousItemIsUploadedKey error:nil])
                {                    
                    return ([isDownloadedNum boolValue] && [isUploadedNum boolValue]);
                }
            }
        }
    }

    return NO;
}

以上返回YES,表示文件已同步(或者我认为......)

所以,现在我继续拨打下面的电话,停止iCloud同步这个文件:

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:localPathURL destinationURL:cloudPathURL error:&error];

我收到以下错误:“操作无法完成。(LibrarianErrorDomain错误2 - 无法禁用未同步项目的同步。”“

知道为什么会出现这种错误以及如何摆脱它?我原以为我的文件完全同步了......

提前致谢!

1 个答案:

答案 0 :(得分:2)

我明白了。要禁用iCloud同步,我不小心打电话给:

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:localPathURL destinationURL:cloudPathURL error:&error];

而不是

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:cloudPathURL destinationURL:localPathURL error:&error];