【问题标题】:Objective-C: Set boolean value in core dataObjective-C:在核心数据中设置布尔值
【发布时间】:2017-04-28 12:04:42
【问题描述】:

在我的数据模型中,在一个实体中,我有一个布尔属性。在 xcmod​​eldatad 文件中,它被列为:

need sync Boolean.在NSmanagedobject文件中如下:

.h file: @property (nonatomic, strong) NSNumber *needsync;//bool
.m file @dynamic needsync;

在编辑后保存记录时,我使用了我之前多次使用过的以下代码:

[list setValue:@0 forKey:@"needsync"];

但是,当它到达这一行时抛出异常

NSUnknownKeyException', reason: '[<__NSCFString 0x17409c4d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key need sync.'

这真的让我很困惑,我想知道是否有人能发现错误或以前发生过这种情况。

谢谢。

【问题讨论】:

  • NSNumber *num = @([@"0" intValue]); [list setValue: num forKey:@"needsync"];

标签: ios objective-c nsunknownkeyexception


【解决方案1】:

再次检查您的代码。

崩溃日志显示您的对象是 NSString,而不是 YourList 对象,因此,它没有需要同步属性 => 崩溃。

【讨论】:

  • 原来我有一个 NSStringnamed 列表以及一个 NSManagedObject 命名列表。有时编译器能够弄清楚哪个是哪个,但在这种情况下它没有。
【解决方案2】:

您的list 字典的类型是什么?是NSMutableDictionary&lt;NSString*, NSNumber*&gt; 吗?如果是这样,那么您的 Entity AttributeProperty Declaration 之间的类型可能不匹配。

或者,如果您的字典是 NSMutableDictionary&lt;NSNumber*, NSNumber*&gt; 类型,那么试试这个:

[list setObject:@0 forKey:needsync]; // don't make `needsync` a NSString* object, it's already an object type (NSNumber*)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2015-07-13
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多