1

如果我发送消息

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

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

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

错误域 = NSCocoaErrorDomain 代码 = 512 “操作无法完成。(可可错误 512。)”

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

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

4

3 回答 3

3

错误很明显。您正在尝试从 iCloud 中删除不在 iCloud 中的项目。当您想使用 删除 iCloud 中setUbiquitous:...的项目时,项目 URL ( itemAtURL:) 应该是 iCloud URL。目标 URL 可以是本地的(但如果 ubiquitous 设置为 则被忽略NO)。

于 2013-06-14T03:47:18.840 回答
2

将“setubiquitous”参数指定为“no”时,您的目标 URL 需要是本地 url,而不是 iCloud 的。你有你的网址切换

于 2013-06-14T03:27:52.453 回答
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];

祝你好运!

于 2013-06-14T03:36:00.063 回答