當設置爲coredata一個NSManagedObject的屬性(NSSet中),它在運行時將顯示此錯誤:迅速coredata - 無法識別的選擇發送到實例
-[__NSArray0 isEqualToSet:]: unrecognized selector sent to instance 0x1551ad60
首先,我不知道哪個實例被識別爲0x1551ad60。
其次,我明白了實例不理解「isEqualToSet」,但我不是在我的代碼的任何地方調用它必須意味着它是由某個框架調用?我猜我的代碼是不正確的,但我不明白如何或在哪裏。
我正在用Swift運行Xcode 7.3(2.0我認爲?),並且我已經在iPad上多次刪除/重新安裝了應用程序。
這是我的代碼,問題行被標記。請幫忙,這讓我發瘋!
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext:NSManagedObjectContext = appDelegate.managedObjectContext
let carEntity = NSEntityDescription.entityForName("Car", inManagedObjectContext:managedContext)
let carObj = NSManagedObject(entity: carEntity!, insertIntoManagedObjectContext: managedContext)
carObj.setValue("Toyota", forKey: "name")
carObj.setValue("Blue", forKey: "colour")
let wheelEntity = NSEntityDescription.entityForName("Wheel", inManagedObjectContext:managedContext)
let wheelObj = NSManagedObject(entity: wheelEntity!, insertIntoManagedObjectContext: managedContext)
wheelObj.setValue(Float(1.3), forKey: "tread")
(Original code)
var wheelObjArray = [NSManagedObject]()
wheelObjArray.append(wheelObj)
let wheelSet = NSSet(array: wheelObjArray)
carObj.setValue(wheelSet, forKey: "wheels")
^^ error here: unrecognized selector sent to instance
(/Original code)
(Edited code)
var wheelObjArray = carObj.mutableSetValueForKey("wheels")
wheelObjArray.addObject(wheelObj)
^^ error here: *** -[NSSet intersectsSet:]: set argument is not an NSSet
(/Edited code)
do {
try managedContext.save()
print("Success!")
} catch let error as NSError {
print("Failed to save: \(error), \(error.userInfo)")
}
我CoreData模型如下:
編輯:車關係 「輪子」 現在是一個一對多的關係。
編輯#2:代碼已更新。
編輯#3:一個可能的辦法解決這個問題是消除來自輪胎的「汽車」的反比關係。
看來,你們的關係被設定爲一個一對一,你可能想改變''輪子到''很多' – zcui93
謝謝你的建議,我以後會遇到這個問題。 – user328414