2016-11-13 3 views
0

CloudKitにレコードを保存しようとしています。レコードには2つの文字列が含まれ、CKAssetにはUIImageが格納されます。ここでは、資産を作成するための私のコードは次のとおりです。CloudKitを使用してレコードを保存するときにそのようなファイルまたはディレクトリがありません

私は CKAssetを使用していませんでした
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! 
let filePath = "file://\(path)/NewPicture.jpg" 

do { 
    try UIImageJPEGRepresentation(newPicture!, 1)!.write(to: URL(string: filePath)!) 
} catch { 
    print("Error saving image to URL") 
    print(error) 
    self.errorAlert(message: "An error occurred uploading the image. Please try again later.") 
} 

let asset = CKAsset(fileURL: URL(string: filePath)!) 
record.setObject(asset, forKey: "picture") 

、レコードが細かいアップロードされました。しかし、今私は次のエラーが表示されます:

open error: 2 (No such file or directory)

どうすればこのエラーを取り除き、正しくレコードを保存できますか?ありがとう!

答えて

2

ファイルURLを正しく作成していません。

コードを作成して使用する場所にCKAssetを使用してください。あなたが欲しい

let docURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! 
let fileURL = docURL.appendingPathComponent("NewPicture.jpg") 

do { 
    try UIImageJPEGRepresentation(newPicture!, 1)!.write(to: fileURL) 
    let asset = CKAsset(fileURL: fileURL) 
    record.setObject(asset, forKey: "picture") 
} catch { 
    print("Error saving image to URL") 
    print(error) 
    self.errorAlert(message: "An error occurred uploading the image. Please try again later.") 
} 

は私も強く、あなたのコードでそれら!のすべてを避けるために、あなたを促します。それらは起こるのを待っているクラッシュです。オプションを適切に扱う。すべての強制アンラッピングは問題を引き起こすでしょう。

関連する問題