iCloudcocoa错误512

我试图从我的iCloud容器复制文件到我的应用程序的caching目录。 我一直在得到The operation couldn't be completed. (Cocoa error 512.) The operation couldn't be completed. (Cocoa error 512.)在我的日志,这是一个非常广泛的错误,意味着NSFileWriteUnknownError ,或写入失败,iOS不知道为什么。

这里是当NSMetadataQuery完成并在iCloud中具有文件名的代码。 我将简要介绍下面的代码。

 - (void)loadData:(NSMetadataQuery *)query { NSArray *cache = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[cacheDirectory stringByAppendingString:@"/issues"] error:NULL]; for (NSMetadataItem *item in [query results]) { NSURL *name = [item valueForAttribute:NSMetadataItemURLKey]; NSString *nameString = [item valueForAttribute:NSMetadataItemPathKey]; NSError *error; NSURL *cacheURL = [NSURL fileURLWithPath:cacheDirectory]; NSURL *destination = [cacheURL URLByAppendingPathComponent:[NSString stringWithFormat:@"issues/%@", [[nameString stringByDeletingLastPathComponent] lastPathComponent]] isDirectory:YES]; [[NSFileManager defaultManager] copyItemAtURL:[name URLByDeletingLastPathComponent] toURL:destination error:&error]; } } } 

这个应用程序同步报纸的问题。 在iCloud文档容器中,有数据的文件夹(一个文件夹可能是5.1.12 ),每个文件夹内有一个同名的PDF文件( 5.1.12.pdf )。

任何想法为什么发生这种情况? 谢谢你的帮助。

 iCloud: file://localhost/private/var/mobile/Library/Mobile%20Documents/AppBundleID/Documents/5.3.12/ Local: file://localhost/var/mobile/Applications/F91E115B-ECED-403E-AB61-41F7A99EF928/Library/Caches/issues/5.3.12/ 

当iCloud将文件同步到iOS设备时,它将首先在您的应用程序容器中创build一个空的无数据文件,让您知道有一个文件可用。 这是你的NSMetadataQuery报告。

如果您查看NSMetadataItem的其他键,您可能会注意到它表示您的项目尚未下载。

在能够复制或打开文件之前,您必须要求iCloud下载它。 在项目path上进行协调读取(就像你在任何打开或复制操作周围应该做的那样)将会隐式下载文件。

解决了 !

如果文件已经存在,copyItemAtURL将返回一个错误。 大多数情况下,您需要制作持久性存档游戏,并使用新更改覆盖文件。

使用这样的东西来写你的文件到iCloud

  BYTE *data = NULL;//Put your file data in here int FileSize = 0;//replace with your file size NSData *myData = [[NSData alloc] initWithBytes:data length:FileSize]; [myData writeToFile:[FileURL path] atomically:YES]; 

通过带有断点和/或NSLog的代码。 这可能是有一个逻辑错误,没有返回你想要的目录path。