2016-10-03 5 views
3

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> 
      } 

の問題は、事前に感謝し、私を助けてください。ここで

+0

私も同じ問題に直面しています。あなたは何か答えを見つけましたか? – Ranjit

+0

@Ranjit:私がこれを観察した解決策はシミュレータで頻繁に発生するものではありませんが、iOSやシミュレータのバグではありません:)最後にfetch()をラップするか、managedObjectContext.perform()またはmanagedObjectContext.performWait ()もクラッシュを止めるのに役立ちます:) –

+0

ok thanks sandeep – Ranjit

答えて

1

は正常に動作コードです: let request = NSFetchRequest<NSFetchRequestResult>(entityName:"Your Entity Name")

+0

これを使用してください要求= NSFetchRequest (entityName: "エンティティ名") –

+0

それは私のために正常に動作します。 iOS 10でも動作します –

関連する問題