我正在尝试使用以下代码将session1.mp3等音频文件从文档目录上传到iCloud
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"session1.mp3"];
NSURL* sourceURL = [[NSURL alloc] initFileURLWithPath:path];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath: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"] URLByAppendingPathComponent:@"session1.mp3"];
[[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 Domain = NSCocoaErrorDomain Code = 513“无法完成操作。(Cocoa error 513.)”UserInfo = 0x1f03d9f0 {NSURL = file:// localhost / var / mobile /Applications/20D82CDA-021E-4067-B9AB-C0197A6FA834/dox.app/session1.mp3,NSUnderlyingError = 0x1f03d990“操作无法完成。不允许操作”}
答案 0 :(得分:0)
您的代码没有任何内在错误。
您是否在任何地方检查ubiquityIdentityToken以确保其可用?
[ [ NSFileManager defaultManager ] ubiquityIdentityToken ];
此外,在您成功设置Ubiquitous的日志记录中,“上传成功”并不准确:该项目只是移动到普遍容器,并将在恶魔感觉时上传。您可以通过NSMetadataQuery检查上传状态。
答案 1 :(得分:-1)
您不应该使用iCloud存储此媒体。
请查看Apple提供的Guidelines。