iCloud 集成中的警告
Posted
技术标签:
【中文标题】iCloud 集成中的警告【英文标题】:Warning in iCloud integration 【发布时间】:2013-03-11 12:16:39 【问题描述】:我正在尝试集成 iCloud。
一切正常,但是当我尝试从 iCloud 读取文件时,我收到警告,例如:
Foundation called mkdir("/var/mobile/Library/Mobile Documents/.ubd/peer-E8A60A8F-FB9D-8721-F47C-hdffgdfg-v23/ftr/(A Document Being Saved By XYZ)"), it didn't return 0, and errno was set to 1.
我的获取数据的代码:
for (NSMetadataItem *item in results)
NSString *filename = [item valueForAttribute:NSMetadataItemDisplayNameKey];
NSURL *url = [item valueForAttribute:NSMetadataItemURLKey];
MyDocument *doc = [[MyDocument alloc] initWithFileURL:url];
[doc openWithCompletionHandler:^(BOOL success)
if (success)
NSData *file = [NSData dataWithContentsOfURL:url];
NSString *docDir = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"Import/iCloud"];
if (![[NSFileManager defaultManager] fileExistsAtPath:docDir])
[[NSFileManager defaultManager] createDirectoryAtPath:docDir withIntermediateDirectories:YES attributes:nil error:nil];
NSString *pdfFile = [docDir stringByAppendingPathComponent:filename];
if(![[NSFileManager defaultManager] fileExistsAtPath:pdfFile])
[[NSFileManager defaultManager] createFileAtPath:pdfFile contents:file attributes:nil];
NSLog(@"Successfully loaded data from cloud file name %@", filename);
else
NSLog(@"Failed to load data");
];
【问题讨论】:
【参考方案1】:看起来您在 iCloud 中有一个部分写入的文件(基于错误中的 A Document Being Saved By XYZ),并且您的元数据查询已将其返回给您,因为它也匹配文件名。几周前我遇到了类似的情况,并通过使用文件的确切路径解决了它,如:
NSString *filepath = [containerURL.path stringByAppendingPathComponent:@"MyFileName"];
NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K == %@", NSMetadataItemPathKey, filepath];
[query setPredicate:pred];
【讨论】:
以上是关于iCloud 集成中的警告的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种通过 iCloud 集成备份 Core Data 数据库的好方法?
如果我使用 Core Data 手动迁移,我以后可以集成 iCloud 同步吗?