setUbiquitous:itemAtURL:destinationURL:错误:不会从iCloud中删除该项目

时间:2012-11-09 10:29:48

标签: objective-c cocoa-touch cocoa icloud nsfilemanager

如果我发送消息

[[NSFileManager defaultManager] setUbiquitous:NO
                                    itemAtURL:url
                               destinationURL:iCloudURL
                                        error:&err]

从iCloud中删除项目,它实际上并没有删除Ubiquitous Container上的文件。这是预期的行为吗?

该方法返回NO,错误对象包含

  

错误Domain = NSCocoaErrorDomain Code = 512“操作无法执行   完成。 (可可错误512.)“

     

的UserInfo = 0x20870970   {NSURL =文件://localhost/var/mobile/Applications/168EE8CD-4CDF-49BE-AD88-1DC7DD9CF25F/Documents/test.txt,

     

NSUnderlyingError = 0x20863a00“操作无法完成。   (LibrarianErrorDomain错误2 - 无法禁用未同步的同步   项。)“}

3 个答案:

答案 0 :(得分:3)

错误很清楚。您正在尝试从iCloud中删除不在iCloud中的项目。如果要使用setUbiquitous:...从iCloud中删除项目,则项目URL(itemAtURL:)应为iCloud URL。目标URL可以是本地URL(但如果普遍存在设置为NO则会被忽略)。

答案 1 :(得分:2)

将“setubiquitous”参数指定为“no”时,您的destinationURL需要是本地URL,而不是iCloud。您已切换了您的网址

答案 2 :(得分:1)

要删除iCloud上的项目,您可以尝试以下代码:

NSError *err;
NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
[fileCoordinator coordinateWritingItemAtURL:_url
                                    options:NSFileCoordinatorWritingForDeleting
                                      error:&err
                                 byAccessor:^(NSURL* writingURL) {
                                           NSFileManager* fileManager = [NSFileManager defaultManager];
                                           [fileManager removeItemAtURL:writingURL error:nil];
                                 }];
[fileCoordinator autorelease];
祝你好运!