如何在 xmppGroupCoreDataStorageObject 中保存和获取?
How to save and fetch in xmppGroupCoreDataStorageObject?
使用 xmpp-messenger-ios
,我已经创建了组并设置了它的配置并将用户添加到其中,然后我想将该组添加到 xmppGroupCoreDataStorageObject
存储中以将其列出到 OpenChatViewController table 查看。
我如何将组数据保存到 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;
嗯,您正在尝试将消息发送到无法响应它的对象。
查看您的异常日志:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString managedObjectContext]: unrecognized selector sent to instance 0x7fdf8c545e50'***
managedObjectContext
消息已发送到 NSString
class.
的实例
当然,它无法响应它,您正在崩溃。
首先,因为你说它在 users
行的 setValue 上崩溃,一个猜测是你的 users
集合并不真正包含类型 [=14 的对象=](但它应该)。我认为你的方法签名应该是:
public class func addUserInCoreData(jid: String, users: Set<XMPPUserCoreDataStorageObject>)
检查你调用这个函数的地方,可能你传递的不是XMPPUserCoreDataStorageObject
对象,而是一些不同的类型,这是错误的。
但可能更重要的是:
let entity = XMPPGroupCoreDataStorageObject.insertGroupName(jid, inManagedObjectContext: moc)
应该被称为而不是
的
let entity =
NSEntityDescription.entityForName("XMPPGroupCoreDataStorageObject",
inManagedObjectContext: moc!)
并且 不是 在 try moc?.save()
之后。此方法 returns 应配置并保存的 XMPPGroupCoreDataStorageObject
对象,而不是表示保存成功的布尔值。
例如,查看本教程(注意保存到核心数据部分中的 saveName
方法):
https://www.raywenderlich.com/115695/getting-started-with-core-data-tutorial
祝你好运!
使用 xmpp-messenger-ios
,我已经创建了组并设置了它的配置并将用户添加到其中,然后我想将该组添加到 xmppGroupCoreDataStorageObject
存储中以将其列出到 OpenChatViewController table 查看。
我如何将组数据保存到 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;
嗯,您正在尝试将消息发送到无法响应它的对象。
查看您的异常日志:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString managedObjectContext]: unrecognized selector sent to instance 0x7fdf8c545e50'***
managedObjectContext
消息已发送到 NSString
class.
的实例
当然,它无法响应它,您正在崩溃。
首先,因为你说它在 users
行的 setValue 上崩溃,一个猜测是你的 users
集合并不真正包含类型 [=14 的对象=](但它应该)。我认为你的方法签名应该是:
public class func addUserInCoreData(jid: String, users: Set<XMPPUserCoreDataStorageObject>)
检查你调用这个函数的地方,可能你传递的不是XMPPUserCoreDataStorageObject
对象,而是一些不同的类型,这是错误的。
但可能更重要的是:
let entity = XMPPGroupCoreDataStorageObject.insertGroupName(jid, inManagedObjectContext: moc)
应该被称为而不是
的let entity = NSEntityDescription.entityForName("XMPPGroupCoreDataStorageObject", inManagedObjectContext: moc!)
并且 不是 在 try moc?.save()
之后。此方法 returns 应配置并保存的 XMPPGroupCoreDataStorageObject
对象,而不是表示保存成功的布尔值。
例如,查看本教程(注意保存到核心数据部分中的 saveName
方法):
https://www.raywenderlich.com/115695/getting-started-with-core-data-tutorial
祝你好运!