CloudKitを使用してユーザーが入力したレコードを保存していますが、アプリケーションがクラッシュします。以下はCloudKitにレコードを保存するとアプリケーションがクラッシュする
私のコードです:
func saveRecordToCloud(_ pinpoint:Details!) -> Void {
// Prepare the record to save
let record = CKRecord(recordType: "Details")
record.setValue(pinpoint.title, forKey: "title")
record.setValue(pinpoint.location, forKey: "location")
record.setValue(pinpoint.date, forKey: "date")
// Resize the image
let originalImage = UIImage(data: pinpoint.image as Data)!
let scalingFactor = (originalImage.size.width > 1024) ? 1024/originalImage.size.width : 1.0
let scaledImage = UIImage(data: pinpoint.image as Data, scale: scalingFactor)!
// Write the image to local file for temporary use
let imageFilePath = NSTemporaryDirectory() + pinpoint.title
try? UIImageJPEGRepresentation(scaledImage, 0.8)?.write(to: URL(fileURLWithPath: imageFilePath), options: [.atomic])
// Create image asset for upload
let imageFileURL = URL(fileURLWithPath: imageFilePath)
let imageAsset = CKAsset(fileURL: imageFileURL)
record.setValue(imageAsset, forKey: "image")
// Get the Public iCloud Database
let publicDatabase = CKContainer.default().publicCloudDatabase
// Save the record to iCloud
publicDatabase.save(record, completionHandler: { (record:CKRecord?, error:NSError?) -> Void in
// Remove temp file
do {
try FileManager.default.removeItem(atPath: imageFilePath)
} catch {
print("Failed to save record to the cloud: \(error)")
}
} as! (CKRecord?, Error?) -> Void)
}
私は、受信エラーがある:
スレッド1:EXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0の)
これがオンになっています2番目に最後の行} as! (CKRecord?, Error?) -> Void)
。
私は私がスウィフト3に私の古いスウィフト2.xのプロジェクトを変換するとき、彼らはCloudKit完了ハンドラを取るこれと同じ問題を抱えていた、との代わりに、スウィフト3に変換しましたスウィフト3.0
クラッシュの原因は何ですか? – Pierce
@Pierce '}と言う行は! (CKRecord?、Error?)?> Void) 'を返します。これを質問に追加します。 –
私はそれが何であるかを知っています - >私は答えを投稿します。あなたのプロジェクトをSwiftの古いバージョンからSwift 3に変換した後にこれが起こりましたか? – Pierce