NCMBのfindObjectsInBackgroundWithBlockを使うとSourceKitServiceがクラッシュしてしまう
前提・実現したいこと
swiftで日記アプリを作っています。
xcodeのバージョンは7.3.1、swiftは2.2です。
発生している問題・エラーメッセージ
xcodeでコードを書き始めると、作業にならないほど頻繁にSourceKitServiceがクラッシュしてしまいます。
いろいろと試す中で、mBaaSのニフティクラウドモバイルバックエンドのデータ取得のメソッド
query.findObjectsInBackgroundWithBlock({ (objects, error) in
をコメントアウトするとクラッシュしなくなることがわかりました。
問題の箇所はわかったのですが、どのように修正すれば良いのかがわかりません。何かお分かりになられましたら教えてください。よろしくお願いします。
問題と思われるコードの全体は以下です。
let query = NCMBQuery(className:"user")
query.whereKey("userName", equalTo: user[0].uuid)
//soucekitのクラッシュの原因はここ!!ここが原因なのは確かなので、さらに詳しくチェックしていく!!
query.findObjectsInBackgroundWithBlock({(objects, error) in
if error == nil{
objects[0].setObject(self.userNameTextField.text, forKey: "ownerName")
objects[0].setObject(self.userSelectWork, forKey: "works")
objects[0].setObject(self.userSelectWorksYear, forKey: "worksYear")
objects[0].setObject(self.myGoalTextView.text, forKey: "myGoal")
if self.pickedPhoto != nil{
objects[0].setObject(self.targetFile?.name, forKey: "userPhotoName")
}
objects[0].save(&saveError)
let realm = try!Realm()
let user = User()
user.id = 1
user.userName = self.userNameTextField.text
user.works = self.userSelectWork
user.worksYear = self.userSelectWorksYear!
user.myGoal = self.myGoalTextView.text
try!realm.write({
})
print("ひ")
let fileName = NSUUID().UUIDString + ".jpg"
let filePath = (self.path! as NSString).stringByAppendingPathComponent(fileName)
if self.photo?.writeToFile(filePath, atomically: true) == false{
self.errorMessage()
}else{
print("写真をファイルに保存成功")
}
//写真があるならば
if self.targetFile != nil{
//更新するデータの写真と比べて、同じものではないならば
if self.targetFile?.name != objects[0]["userPhotoName"] as! String{
self.targetFile?.saveInBackgroundWithBlock({ (error:NSError!) in
if error == nil{
self.navigationController?.popToRootViewControllerAnimated(true)
}else{
self.errorMessage()
}
}, progressBlock: { (percentDone) in
})
}
}else{
//写真がないなら
self.navigationController?.popToRootViewControllerAnimated(true)
}
}else{
//エラー処理
self.errorMessage()
}
})
}
補足
先日、同じ問題に関する質問をさせていただき未解決なのですが、調べていくうちにさらに質問したい事柄が出てきたので新しく投稿させていただきました。
SourceKitService が予期しない理由で終了しました。というエラーの対処方法
また、他サイトでも質問させていただいていますが、未解決の状態なので質問させていただきました。
https://teratail.com/questions/34217?complete=