2016-04-18 28 views
30

我正在創建一個小應用程序來學習CoreData中的多對多關係。然而,使用下面的代碼,我從我NSFetchResult投放到我的實體類(「Groepering」)的錯誤:從'NSPersistentStoreResult'投射到不相關的類型'實體'總是失敗

enter image description here

我沒有看到樣品我發現在互聯網上相比,我的項目有什麼區別,爲什麼演員仍然失敗?

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let managedContext = appDelegate.managedObjectContext 

let fetchRequest : NSFetchRequest = NSFetchRequest(entityName: "Entity") 

    do { 
     let fetchResults = try managedContext.executeRequest(fetchRequest) 
     let groeperingen = fetchResults as! [Entity] 
     // Here I get the Error:^

    } catch { 
     print("Error") 
} 
+4

這只是一個錯字:'managedContext.executeFetchRequest(fetchRequest)' – vadian

回答

77

使用executeFetchRequest當執行NSFetchRequest時NSManagedObjectContext的方法。

編輯斯威夫特3:對於斯威夫特3,使用方法:

let result = try managedContext.fetch(fetchRequest) 
+0

謝謝!讀了千遍之後,我仍然一直仔細閱讀,並在腦海中正確閱讀。 – Emptyless

+2

在Swift 3中,此命令已更改爲NSManagedObjectContext.fetch(NSFetchRequest ) [鏈接到Apple文檔](https://developer.apple.com/reference/coredata/nsmanagedobjectcontext/1506672-fetch) – Peter

+0

我打電話給 'let result = try managedContext.execute(fetchRequest)' 並花費幾個小時找到錯誤的方法錯字執行獲取 –

14

我最近轉換我的代碼斯威夫特3,跑進這個相同的錯誤,雖然不是一個錯字的原因。看起來新的等效函數調用是let fetchResults = try managedContext.fetch(fetchRequest)

+3

你如何投射到你的NSmanagedobject? –

+2

這在Swift 3中適用於我。還有一個managedObjectContext.execute(request)方法,但會產生與上面相同的問題。 – josephap

+1

@PabloMartinez我使用'let fetchResults = try managedContext.fetch(fetchRequest)作爲結果來施放結果! [MySubclass]'。 – blwinters

相關問題