iCloud Cocoa Error 512

时间:2012-07-21 02:20:57

标签: iphone objective-c ios ipad icloud

我正在尝试将文件从iCloud容器复制到我的应用缓存目录。我一直在我的日志中收到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/

3 个答案:

答案 0 :(得分:2)

当iCloud将文件同步到iOS设备时,它会首先在应用容器中创建一个空的无数据文件,以通知您有可用的文件。这是您NSMetadataQuery报告的内容。

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

在复制该文件或打开文件之前,您必须要求iCloud下载该文件。在项目的路径上进行协调读取(正如您应该在任何打开或复制操作中进行的那样)将隐式下载文件。

答案 1 :(得分:2)

已解决!

如果文件已存在,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];

答案 2 :(得分:0)

使用断点和/或NSLog逐步执行代码。可能是因为逻辑错误没有返回您想要的目录路径。