如何在CloudKit中存储大图像?

我试图将图片上传到CloudKit ,并将其存储为NSData ,但是使用相机拍摄的相对较大的图片,我收到此错误:

 Error saving record  to server: record too large id=04359DFA-8370-4000-9F53-5694FC53FA9C of type UserSetting 

CloudKit可以存储的最大数据大小是CloudKit

如何在CloudKit存储使用相机拍摄的大图像?

我尝试了两个图像,并绘制了它们的大小。

 let d = UIImagePNGRepresentation(image) println("d.length: \(d.length)") 
  • d.length: 55482 < – 有效
  • d.length: 17614327 < – 不起作用

您应该将图片存储为CKAsset。 对于CKRecord,存在尺寸限制。 对于CKAsset,没有(除了CloudKit存储限制)。 根据文件:

将资产用于离散数据文件。 如果要将图像或其他离散文件与记录关联,请使用CKAsset对象执行此操作。 虽然资产不计入该限制,但记录数据的总大小限制为1 MB。

您可以像这样创建一个CKAsset:

 var File : CKAsset = CKAsset(fileURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("image-not-available", ofType: "jpg")!))