如果我发送消息
[[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 - 无法禁用未同步的同步 项。)“}
答案 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];
祝你好运!