为coredata设置NSManagedObject的属性(NSSet)时,它将在运行时显示此错误:
public static <A, B> void handleEitherException(CompletionStage<A> a, CompletionStage<B> b, Consumer<Throwable> onException) {
AtomicBoolean aCompletionStageHasFailed = new AtomicBoolean();
handleEitherException(a, onException, aCompletionStageHasFailed);
handleEitherException(b, onException, aCompletionStageHasFailed);
}
private static <U> void handleEitherException(CompletionStage<U> u, Consumer<Throwable> onException, AtomicBoolean aCompletionStageHasFailed) {
u.handle((a, t) -> {
if (t != null) {
if (aCompletionStageHasFailed.compareAndSet(false, true)) {
onException.accept(t);
throw new RuntimeException(t);
}
}
return null;
});
}
首先,我不知道哪个实例被识别为0x1551ad60。
其次,我理解实例不理解'isEqualToSet',但我不是在我的代码中的任何地方调用它,这必然意味着它在某个地方被框架调用了?我猜我的代码不正确,但我不明白如何或在哪里。
我正在使用Swift运行Xcode 7.3(我认为是2.0?)我已经在iPad上多次删除/重新安装了该应用程序。
这是我的代码,问题行已标记。请帮忙,这让我很生气!
-[__NSArray0 isEqualToSet:]: unrecognized selector sent to instance 0x1551ad60
我的CoreData模型如下:
编辑:汽车关系“轮子”现在是一对多的关系。
编辑#2:代码已更新。
编辑#3:此问题的一个可能的解决方法是从Wheel“car”中删除反向关系。
答案 0 :(得分:0)
var wheel_obj_array = [NSManagedObject]()
应该是
var wheel_obj_array = car_obj.mutableSetValueForKey("wheels")
wheel_obj_array.addObject(wheel_obj)
也不应该在vars中使用_,因此很难阅读任何内容。
答案 1 :(得分:0)
car_obj.setValue(NSSet(object: wheel_obj), forKey: "wheels")
应该有用。
wheel_obj.setValue(car_obj, forKey: "relationship")
会自动设置反向关系,可能更易于编写和读取。
顺便说一句,您可能希望将Wheel
中的关系更改为car
,而不是将当前的更改为 relationship
。
答案 2 :(得分:-1)
在我的情况下,它通过删除NSSet。发生错误时,我使用的代码是:
/www
然后为了使其有效我将其改为:
project.setValue(NSSet(object: agent), forKey: "agent")
谢谢