如何保存和获取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
集合并不包含XMPPUserCoreDataStorageObject
types的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
类的一个实例。
当然,它不能回应,你正在崩溃。
- CoreData通过退出保存对象的变化
- 为什么“不在”在这个NSPredicate中不起作用?
- 我可以在一个应用程序中创build一个核心数据对象图,然后在另一个预设状态下使用它吗?
- Core Data父级ManagedObjectContext是否需要与子级上下文共享一个并发types?
- 添加属性到多对多的关系?
- 改变核心数据模型:复古兼容性
- UIImageView + AFNetworking setImageWithURLRequest使用RestKit?
- 如何在NSPredicate中使用“ALL”聚合操作来过滤基于CoreData的集合
- NSFetchedResultsController不对encryption的属性进行sorting