我有两个核心数据模型设置,它们具有多对多的关系。
class BuddyCD: NSManagedObject {
@NSManaged var memberOfBunches: NSSet
}
class BunchCD: NSManagedObject {
@NSManaged var bunchMembers: NSSet
}
旁注:CD表示核心数据 我在创建BunchCD时,我想作为成员添加许多好友。
我在Bunch类中有这个方法:
class func createInManagedObjectContext (moc: NSManagedObjectContext, members: [BuddyCD]?) -> BunchCD {
let newBunch = NSEntityDescription.insertNewObjectForEntityForName(CoreDataConst.bunchModel, inManagedObjectContext: moc) as! BunchCD
if let membersNonOptional = members {
// Add members to this bunch
for member in membersNonOptional {
member.addToBunch(newBunch)
}
}
return newBunch
}
我在Buddy课程中有这个方法:
func addToBunch(bunch: BunchCD) {
var bunches = self.mutableSetValueForKey("memberOfBunches")
bunches.addObject(bunch)
}
我收到此错误:
2015-07-19 01:00:38.587 MyApp[34979:1885727] -[__NSSetIobjectAtIndex:]: unrecognized selector sent to instance 0x7fb7d3ecde30 2015-07-19 01:00:38.603 LunchBunch[34979:1885727] ***Terminating app due to uncaught exception'NSInvalidArgumentException', reason: '-[__NSSetI objectAtIndex:]: unrecognized selector sent to instance 0x7fb7d3ecde30'
在核心数据中添加成员到多对多关系的最佳做法是什么?
答案 0 :(得分:0)
您的代码似乎没问题。错误必须来自其他地方。也许你可以通过单步执行代码来找到它。
答案 1 :(得分:0)
所以错误起源于其他地方,我猜测我的应用程序的多线程组件(这不是故意的)。这些错误很可能源于使用Alamofire异步请求并在请求回调中使用托管对象上下文。因此,我在托管对象上下文访问周围添加了代码,以确保它(MOC)在主线程上使用:
dispatch_async(dispatch_get_main_queue()) {
// Managed Object Context access here
}