无法识别的选择器发送到具有可变 NSSet 的实例错误
Unrecognized selector sent to instance error with even mutable NSSet
虽然我知道这个问题经常被问到,但我还没有找到适合我的案例的解决方案。
我正在开发使用核心数据的应用程序。在核心数据中,我有一个名为 User Ent 的实体,它与名为 Hefth Ent 的实体具有一对多关系。 Hefth Ent 与一个用户实体具有反向关系。我正在尝试修改用户中的 hefths 对象集,但我总是收到此错误:
setOwnerUser:]: 无法识别的选择器发送到实例 0x7fd2d25dae90
尽管我已经在其他问题中尝试了建议的解决方案,例如将集合转换为可变集合然后对其进行变异,但这对我不起作用。这是用户输入 class :
import Foundation
import CoreData
extension UserEnt {
@NSManaged var name: String?
@NSManaged var numOfKhetma: NSNumber?
@NSManaged var profilePic: NSData?
@NSManaged var remPagesForCurrentKhetma: NSNumber?
@NSManaged var currentHefth: HefthEnt?
@NSManaged var currentMoraj3a: Moraj3aEnt?
@NSManaged var hefthSejil: NSSet?
}
这是第 1 个 class...`import Foundation
导入核心数据
extension HefthEnt {
@NSManaged var achivingPercentage: NSNumber?
@NSManaged var endDate: NSDate?
@NSManaged var numOfPages: NSNumber?
@NSManaged var remPages: NSNumber?
@NSManaged var title: String?
@NSManaged var ownerUser: UserEnt?
}
其中 ownerUser 是拥有许多此 hefth 对象的用户
这是我用来尝试向用户添加 hefth 的最后一个代码,但我仍然遇到相同的错误....
func addHefthToSejil(hefth : HefthObj, forUserOfIndex userIndex:Int)
{
let request = NSFetchRequest(entityName: "UserEnt")
let users = (try! context.executeFetchRequest(request)) as! [UserEnt]
let hefthEnt = NSEntityDescription.insertNewObjectForEntityForName("HefthEnt", inManagedObjectContext: context) as! HefthEnt
hefthEnt.numOfPages = hefth.numOfPages
hefthEnt.endDate = hefth.endDate
hefthEnt.remPages = hefth.numOfPages
hefthEnt.achivingPercentage = hefth.achievingPercentage
hefthEnt.ownerUser = users[userIndex]
users[userIndex].mutableSetValueForKey("hefthSejil").addObject(hefthEnt)
// the problem happens here
do
{
try context.save()
}catch
{
print("error")
}
updateAllUsers()
}
我已经尝试了很多方法,但没有任何效果,希望我能在这里找到解决问题的方法。
试试这个:
let user = users[userIndex] as? UserEnt
let relationship = user.valueForKeyPath("hefthSejil") as? NSMutableSet
relationship.addObject(hefthEnt)
虽然我知道这个问题经常被问到,但我还没有找到适合我的案例的解决方案。 我正在开发使用核心数据的应用程序。在核心数据中,我有一个名为 User Ent 的实体,它与名为 Hefth Ent 的实体具有一对多关系。 Hefth Ent 与一个用户实体具有反向关系。我正在尝试修改用户中的 hefths 对象集,但我总是收到此错误: setOwnerUser:]: 无法识别的选择器发送到实例 0x7fd2d25dae90 尽管我已经在其他问题中尝试了建议的解决方案,例如将集合转换为可变集合然后对其进行变异,但这对我不起作用。这是用户输入 class :
import Foundation
import CoreData
extension UserEnt {
@NSManaged var name: String?
@NSManaged var numOfKhetma: NSNumber?
@NSManaged var profilePic: NSData?
@NSManaged var remPagesForCurrentKhetma: NSNumber?
@NSManaged var currentHefth: HefthEnt?
@NSManaged var currentMoraj3a: Moraj3aEnt?
@NSManaged var hefthSejil: NSSet?
}
这是第 1 个 class...`import Foundation 导入核心数据
extension HefthEnt {
@NSManaged var achivingPercentage: NSNumber?
@NSManaged var endDate: NSDate?
@NSManaged var numOfPages: NSNumber?
@NSManaged var remPages: NSNumber?
@NSManaged var title: String?
@NSManaged var ownerUser: UserEnt?
}
其中 ownerUser 是拥有许多此 hefth 对象的用户 这是我用来尝试向用户添加 hefth 的最后一个代码,但我仍然遇到相同的错误....
func addHefthToSejil(hefth : HefthObj, forUserOfIndex userIndex:Int)
{
let request = NSFetchRequest(entityName: "UserEnt")
let users = (try! context.executeFetchRequest(request)) as! [UserEnt]
let hefthEnt = NSEntityDescription.insertNewObjectForEntityForName("HefthEnt", inManagedObjectContext: context) as! HefthEnt
hefthEnt.numOfPages = hefth.numOfPages
hefthEnt.endDate = hefth.endDate
hefthEnt.remPages = hefth.numOfPages
hefthEnt.achivingPercentage = hefth.achievingPercentage
hefthEnt.ownerUser = users[userIndex]
users[userIndex].mutableSetValueForKey("hefthSejil").addObject(hefthEnt)
// the problem happens here
do
{
try context.save()
}catch
{
print("error")
}
updateAllUsers()
}
我已经尝试了很多方法,但没有任何效果,希望我能在这里找到解决问题的方法。
试试这个:
let user = users[userIndex] as? UserEnt
let relationship = user.valueForKeyPath("hefthSejil") as? NSMutableSet
relationship.addObject(hefthEnt)