2014-12-01 71 views
2

我在使用Core Data中的關係時遇到問題。我創建了我的數據模型,其中包括以下實體:用戶,對話,消息,參與者 - 每個實體都包含與其後的實體的一對多關係。我使用Editor - > Create NSManagedObject Subclass爲每個實體生成類,併爲每個類正確創建.Swift文件。該項目建立,但在嘗試創建並保存新的用戶我收到以下錯誤時:CoreData:無法爲實體加載類

2014-12-01 12:31:28.450 Messenger[2627:151403] CoreData: warning: Unable to load class named 'Messenger.User' for entity 'User'. Class not found, using default NSManagedObject instead. 

我確信,我的實體類是與項目/模塊名稱(Messenger.User)前綴。

我還在用戶類正上方添加了「@ObjC(用戶)」,併爲該項目添加了「-ObjC」到「其他鏈接器標誌」,正如各種其他帖子中的人員所建議的。這些都是我可以找到的所有修復,但我仍然得到相同的錯誤。下面是我的User類的樣子,以供參考:

import Foundation 
import CoreData 
@objc(User) 
class User: NSManagedObject { 

    @NSManaged var api : API 
    @NSManaged var username: String 
    @NSManaged var userID: String 
    @NSManaged var passcode: String 
    @NSManaged var conversations: NSSet 

    func findConversations(sourceView: MessengerViewController) { 
     api.findConversations(sourceView) 
    } 
    func addConversation(newConversation: Conversation) { 
     self.addConversationObject(newConversation) 
    } 
} 
extension User { 
    func addConversationObject(value: Conversation) { 
     var items = self.mutableSetValueForKey("conversations"); 
     items.addObject(value) 
    } 
    func removeConversationObject(value: Conversation) { 
     var items = self.mutableSetValueForKey("conversations"); 
     items.removeObject(value) 
    } 
} 

沒有任何人有一個想法,否則我做錯了什麼?我已經嘗試過所有可能會遇到的問題,但目前爲止似乎沒有任何工作能夠實現。

編輯:試圖創建一個新的用戶對象時,在下面的第三行中出現的警告:

let userContext : NSManagedObjectContext = self.appDel.managedObjectContext! 
let userEntity : NSEntityDescription = NSEntityDescription.entityForName("User", inManagedObjectContext: userContext)! 
var newUser = User(entity: userEntity, insertIntoManagedObjectContext: userContext) 

回答

0

參照我自己answer,也許你還應該確保你任何獲取結果到適當的班級。例如。

let result = context.executeFetchRequest(request, error:nil) as [User] 

爲了響應您的代碼更新,您應該嘗試插入新的實例,如下所示。

var user = NSEntityDescription.insertNewObjectForEntityForName("User", 
      inManagedObjectContext: context) as User 
+0

我目前使用這種方法獲取對象,但試圖將對象添加到核心數據(見我的帖子更新),前取不執行過發生警告。 @Mundi – hundley 2014-12-01 22:43:42

+0

我相應地更新了我的答案。這是插入對象的另一種標準方式。請注意,我*演員*,而你沒有。 – Mundi 2014-12-01 23:17:01

+0

感謝您的更新,但不幸的是它仍然會產生相同的結果:無法爲實體'User'加載類'Messenger.User'@Mundi – hundley 2014-12-01 23:36:56

相關問題