2017-03-09 30 views
0

私はCoreDataについて学んでいます。私はthis tutorialに行ってきましたが、私のUIViewControllerの方法の一つでコンパイルの問題に遭遇しました。明白な間違いをしている場合を除き、それはチュートリアルのコードとまったく同じです。私はXcode 8.2.1を使用しています。NSManagedObjectContextでfetch()を正しく呼び出す方法は?

func getStores() { 
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return } 
    let managedContext = appDelegate.persistentContainer.viewContext 
    let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Store") 

    do { 
     // Compilation error on the next line: 
     // Cannot convert value of type 'NSFetchRequest<Store>' to expected argument type 'NSFetchRequest<NSFetchRequestResult> 
     stores = try managedContext.fetch(fetchRequest) 
    } catch { 
     // handle error 
    } 
    } 
} 

ソリューション:以前の私のVCで

私が間違っているCoreDataエンティティを使用してstores配列を宣言しました。そのミスを修正して問題を解決しました。

+0

stores'はタイプ '[お店]' 'で定義されている場合あなたはあなたのケースでは '[NSManagedObject]'型があると信じている 'fetch'の呼び出しとの不一致 - 実際のエラーメッセージは何ですか? – MathewS

答えて

1

変更ラインのいずれかに

let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Store") 

let fetchRequest: NSFetchRequest<NSFetchRequestResult> = Store.fetchRequest() 

それとも

let fetchRequest = NSFetchRequest<Store>(entityName: "Store") 
+0

奇妙な。これらの変更のいずれかを使用しても、私はまだ同じエラーが発生します([screenshot](https://www.evernote.com/l/ABMAeVYIpdxGc66qj7CXMZ53y8c8pxTdLKUB/image.png) – RobertJoseph

+1

@RobertJosephこれは完璧に働いているので、プロジェクトのクリーンアップを試みてください私は –

+0

私はそれを試みました私はDerivedDataフォルダからプロジェクトを削除するまで行っていました奇妙なことが起こっています助けてくれてありがとう私はあなたが正しいと確信しているのでこれを解決してマークします – RobertJoseph

関連する問題