如何保存和获取xmppGroupCoreDataStorageObject?

使用xmpp-messenger-ios ,我已经创build了组并设置了它的configuration并添加了用户,然后我想将组添加到xmppGroupCoreDataStorageObject存储中以将其列入OpenChatViewController表视图。

我如何将组数据保存到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; 

首先,因为你说它在setValue for users行上崩溃了,所以猜测是你的users集合并不包含XMPPUserCoreDataStorageObjecttypes的XMPPUserCoreDataStorageObject (但它应该是这样)。 我认为你的方法签名应该是:

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

检查你调用这个函数的地方,可能是你传递了一组不是XMPPUserCoreDataStorageObject对象,而是一些不同的types,这是错误的。

但可能更重要的是:

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

应该被调用而不是

让实体= NSEntityDescription.entityForName(“XMPPGroupCoreDataStorageObject”,inManagedObjectContext:moc!)

不是try moc?.save() 。 这个方法返回一个XMPPGroupCoreDataStorageObject对象,该对象应该被configuration然后被保存,而不是一个表示成功保存的布尔值。

例如,查看本教程(请注意保存到核心数据部分中的saveName方法): https : saveName

祝你好运!

那么,你正试图将消息发送给一个无法响应的对象。
看看你的例外日志:

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

managedObjectContext消息已发送到NSString类的一个实例。
当然,它不能回应,你正在崩溃。