Xcode:CloudKit 中的 CKAsset
Posted
技术标签:
【中文标题】Xcode:CloudKit 中的 CKAsset【英文标题】:Xcode: CKAsset in CloudKit 【发布时间】:2016-01-10 03:56:56 【问题描述】:在我下面的代码中,
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *localPath = [[paths objectAtIndex: 0] stringByAppendingPathComponent: @"temporary.png"];
NSLog(@"local path=%@", localPath);
[UIImagePNGRepresentation(self.scriptPicture.image) writeToFile:localPath atomically:YES];
//[opData.scripts writeToFile:localPath atomically:YES];
if ([[NSFileManager defaultManager] fileExistsAtPath:localPath])
NSLog(@"file is exist");
NSURL *fileurl=[NSURL URLWithString:localPath];
CKAsset *myfile=[[CKAsset alloc] initWithFileURL:fileurl];
//postRecrod[@"scriptPicture"]=myfile;
[postRecrod setObject:myfile forKey:@"scriptPicture"];
“CKAsset *myfile=[[CKAsset alloc] initWithFileURL:fileurl];
”行会出现错误
错误信息如下:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'非文件 URL'
我不知道如何解决这个问题并整夜搜索网络,但没有任何帮助。 请帮我 !我是代码初学者!
【问题讨论】:
【参考方案1】:您正在错误地构建您的fileurl
。
替换这一行:
NSURL *fileurl=[NSURL URLWithString:localPath];
用这个:
NSURL *fileurl=[NSURL fileURLWithPath:localPath];
始终使用 fileURLWithPath:
方法从文件路径创建文件 URL。在为代表以模式开头的正确 URL 的字符串创建 URL 时使用 URLWithString:
(例如 http:、mailto: 等)。
【讨论】:
【参考方案2】:我认为您的字符串将以 file:// 开头 你能不能试着把它改成这样:
在 Swift 中:
CKAsset(fileURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("temporary", ofType: "png")!))
【讨论】:
以上是关于Xcode:CloudKit 中的 CKAsset的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 使用 CKAsset 将图像发送到 CloudKit
在 CloudKit 中将图像存储为 CKAsset,图像倒置
单个 CKRecord 中的一系列 CKAsset 是不是存在问题?