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 文件大小限制

在 CloudKit 中将图像存储为 CKAsset,图像倒置

单个 CKRecord 中的一系列 CKAsset 是不是存在问题?

播放通过 CloudKit 作为 CKAsset 下载的视频 - iOS

将 CloudKit 记录保存到本地文件保存除 CKAsset 之外的所有字段