2016-12-08 78 views
1

使用xmpp-messenger-ios,我已經創建了該組並設置了它的配置並添加了用戶,然後我想將該組添加到xmppGroupCoreDataStorageObject存儲中以將其列入OpenChatViewController表視圖。如何保存和獲取xmppGroupCoreDataStorageObject?

如何我節省了組數據到xmppGroupCoreDataStorageObject:

public class func addUserInCoreData(jid:String, users: Set<NSObject>) { 

     let moc = OneRoster.sharedInstance.managedObjectContext_roster() as NSManagedObjectContext? 
     let entity = NSEntityDescription.entityForName("XMPPGroupCoreDataStorageObject", inManagedObjectContext: moc!) 
     let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: moc!) 
     person.setValue(jid, forKey: "name") 
     person.setValue(users, forKey: "users") // Code breaks here. 
     print(moc.debugDescription) 

     do{ 
      try moc?.save() 
      let sucess = XMPPGroupCoreDataStorageObject.insertGroupName(jid, inManagedObjectContext: moc) 
      print(sucess) 
     } 
     catch let error{ 
      print(error) 
     } 

    } 

遭遇異常:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString managedObjectContext]: unrecognized selector sent to instance 0x7fdf8c545e50'*** 

這裏是框架實現:

@property (nonatomic, strong) NSString * name; 
@property (nonatomic, strong) NSSet* users; 

回答

0

首先,因爲你說它在012V行的setValue上崩潰,所以有人猜測你的users集合並不真的包含XMPPUserCoreDataStorageObject類型的對象(但它應該是)。我覺得你的方法簽名應該是:

public class func addUserInCoreData(jid: String, users: Set<XMPPUserCoreDataStorageObject>) 

檢查要調用這個函數的地方,它可能是要傳遞一組不XMPPUserCoreDataStorageObject對象的情況下,但是一些不同類型的,這是不對的。

但或許更重要的是:

let entity = XMPPGroupCoreDataStorageObject.insertGroupName(jid, inManagedObjectContext: moc) 

應該叫代替

設實體= NSEntityDescription.entityForName( 「XMPPGroupCoreDataStorageObject」, inManagedObjectContext:MOC!)

不是之後try moc?.save()。此方法返回應配置並保存的XMPPGroupCoreDataStorageObject對象,而不是指示成功保存的bool。

退房,例如,本教程(注意在保存的saveName方法核心數據部分): https://www.raywenderlich.com/115695/getting-started-with-core-data-tutorial

祝你好運!

+0

兄你能幫我解決這個問題嗎?https://stackoverflow.com/questions/44172852/how-to-parse-xmppmessage-element-attribute-and-node-in-xmppframework-with-swif? –

1

那麼,你正試圖發送消息給一個無法響應它的對象。
看看你的異常日誌:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString managedObjectContext]: unrecognized selector sent to instance 0x7fdf8c545e50'*** 

managedObjectContext消息已發送到NSString類的一個實例。
當然,它無法迴應它,你會得到崩潰。

相關問題