How to properly send an image to CloudKit as CKAsset?

后端 未结 3 1869
你的背包
你的背包 2020-12-10 06:00

I have an image (UIImage and it\'s url too) and I\'m trying to send it to CloudKit as a CKAsset but I\'m having this error: Terminating app due to uncaught exception \

3条回答
  •  天涯浪人
    2020-12-10 06:39

    In my experience, the only way to save upload UIImage as a CKAsset is to:

    1. Save the image temporarily to disk
    2. Create the CKAsset
    3. Delete the temporary file

    let data = UIImagePNGRepresentation(myImage); // UIImage -> NSData, see also UIImageJPEGRepresentation
    let url = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(NSUUID().UUIDString+".dat")
    do {
        try data!.writeToURL(url, options: [])
    } catch let e as NSError {
        print("Error! \(e)");
        return
    }
    newUser["photo"] = CKAsset(fileURL: url)
    
    // ...
    
    publicData.saveRecord(newUser, completionHandler: { (record: CKRecord?, error: NSError?) in
        // Delete the temporary file
        do { try NSFileManager.defaultManager().removeItemAtURL(url) }
        catch let e { print("Error deleting temp file: \(e)") }
    
        // ...
    }
    


    I filed a bug report a few months ago requesting the ability to initialize CKAsset from in-memory NSData, but it hasn't been done yet.

提交回复
热议问题