将数据上传到 iCloud
Posted
技术标签:
【中文标题】将数据上传到 iCloud【英文标题】:Upload data to iCloud 【发布时间】:2013-01-31 15:06:40 【问题描述】:我正在尝试使用以下代码将文档上传到 iCloud
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"test.png"];
NSURL* sourceURL = [[NSURL alloc]initWithString:path];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:[sourceURL path]])
NSLog(@"File found!");
else
NSLog(@"File not found!");
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq)
NSLog(@"iCloud access at %@", ubiq);
NSError* error = nil;
NSURL *destinationURL = [ubiq URLByAppendingPathComponent:@"Documents/test.png"];
[[NSFileManager defaultManager] setUbiquitous:YES
itemAtURL:sourceURL
destinationURL:destinationURL
error:&error];
if(error != nil)
NSLog(@"Error while uploading the file: %@", error);
else
NSLog(@"File ulpoaded successfully");
else
NSLog(@"No iCloud access");
我尝试上传的文件存在(打印了“找到的文件”),但将其上传到 iCloud 会产生以下错误
Error while uploading the file: Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x1dd6bda0 NSURL=/var/mobile/Applications/9F496F51-9DCA-4379-A62E-FFF7D7AB7385/VerticalSwipeArticles.app/test.png, NSUnderlyingError=0x1dd6c120 "The operation couldn’t be completed. Operation not permitted"
谢谢
【问题讨论】:
确保您的所有权利都是正确的,并且您在开发门户中已将应用标记为 iCloud。 是的,我查过了,没错 【参考方案1】:使用 GCD 并从不同的线程调用 iCloud 代码(特别是 NSURL *ubiq =... 行)。在某些情况下,在主线程上调用它可能会阻塞应用程序。
你构建 iCloud 路径的方式在我看来很奇怪。试试这个:
NSURL *destinationURL = [[ubiq URLByAppendingPathComponent:@"Documents"] URLByAppendingPathComponent:@"test.png"];
【讨论】:
我应该在不同的线程中上传文件还是只上传 NSURL* ubiq= ... 行? 我尝试这样做,然后生成以下错误“无法完成操作。不允许操作” @ahmedelbagoury 我通常在不同的线程上做所有的 iCloud 工作,并在发布关于你的问题的 UI 更新/通知等时获取主队列,我没有明确的答案,还有其他相关的吗到 iCloud 工作?例如,您可以在 NSUbiquitousKeyValueStore 上存储简单的键对象吗? 在此之后我已经获得了上传成功的方法,之后我如何从 icloud 中检索我的数据?以上是关于将数据上传到 iCloud的主要内容,如果未能解决你的问题,请参考以下文章
在我的应用程序上启用 iCloud 时,现有核心数据数据库未上传到 iCloud