swift 2.2からSwift 2.3にマイグレーションしていますが、移行するとiOS 10ではNSFetchRequestがパラメータ化されたタイプになりました。したがって、私は以下のように自分のコードを変更することを決めた私は、コードを実行したとしてfetchRequest初期にブレークポイントを置いて、その説明を印刷したときに、iOS 10でパラメータ化されたNSFetchRequestは<未初期化>を返します
var fetchRequest : NSFetchRequest<SomeEntity>
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
} else {
fetchRequest = NSFetchRequest(entityName: "SomeEntity")
}
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let SomeEntityArray = try! appdelegate.managedObjectContext.fetch(fetchRequest)
は今、私はクラッシュログ
で、さらにコードのクラッシュを実行するには「」ですTerminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: is not a valid NSFetchRequest.'
かの条件を削除し、すべてが正常に動作します
単に
var fetchRequest : NSFetchRequest<SomeEntity>
fetchRequest = NSFetchRequest(entityName: "SomeEntity")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let SomeEntityArray = try! appdelegate.managedObjectContext.fetch(fetchRequest)
それを維持するには!
いただきまし
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
}
の問題は、事前に感謝し、私を助けてください。ここで
私も同じ問題に直面しています。あなたは何か答えを見つけましたか? – Ranjit
@Ranjit:私がこれを観察した解決策はシミュレータで頻繁に発生するものではありませんが、iOSやシミュレータのバグではありません:)最後にfetch()をラップするか、managedObjectContext.perform()またはmanagedObjectContext.performWait ()もクラッシュを止めるのに役立ちます:) –
ok thanks sandeep – Ranjit