我正在遷移到Swift 3,並在遷移抽象CoreData查詢代碼時遇到了一個非常奇怪的錯誤消息。 entityName
被傳遞到下面的方法:Swift 3/XCode 8 NSManagedObjectContext.fetch錯誤
func objects(entityName name:String)->[NSManagedObject]? {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName:name)
var objects: [NSManagedObject]?
do {
objects = try managedObjectContext.fetch(fetchRequest)
} catch { ... }
}
這將導致以下錯誤:
Cannot invoke 'fetch' with an argument list of type '(NSFetchRequest<NSFetchRequestResult>)' Expected an argument list of type '(NSFetchRequest<NSFetchRequestResult>)'
的誤差,說明我不能使用它的期望類型。 在Swift 3中可以像這樣抽象調用CoreData嗎?
該帖子How to apply the type to a NSFetchRequest instance?是什麼引領我到目前爲止。
我試圖投fetchRequest
,但它沒有改變任何東西。 managedObjectContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>)
感謝你爲這個Karanveer。我被掛在錯誤信息上,並沒有想到在我面前看到明顯的鑄造問題。 Bug報告已提交給Apple。 https://openradar.appspot.com/radar?id=5049582866137088 – dmorrow
@dmorrow好。還有其他的錯誤,比如佈局問題。您可能需要更改Storyboard文件中的內容。就像在File Inspector中一樣,您可能需要將選項從Xcode 8.0更改爲Xcode 7.x –