核心数据:如何检查值是否与属性兼容?

时间:2016-02-15 09:24:19

标签: ios swift core-data

我正在寻找一种检查任意值是否与给定属性兼容的方法。

如果尝试将NSNumber设置为预期firstName的{​​{1}},则会抛出此异常:

NSString

当处理动态和可能不好的数据时,比如从服务接收Fatal Exception: NSInvalidArgumentException Unacceptable type of value for attribute: property = "name"; desired type = NSString; given type = __NSCFNumber; 时,我想在运行时检查值是否兼容。是否有任何简单而稳定的方法为属性类型和值的所有组合执行此操作?

2 个答案:

答案 0 :(得分:1)

每个核心数据实体由实例NSEntityDescription描述, 其中包含有关属性,属性及其属性的所有信息 类型等。

entity的{​​{1}}属性是对此的引用 描述

这是一种可能的实施,作为“概念证明”。

NSManagedObject
如果值类型与实体类型兼容,

设置值(并返回myObject.safeSetValue(value, forKey: key) ),否则返回true

false

答案 1 :(得分:0)

您可以使用Swift的功能,如下所示

let desiredVariable = responseData["key"] as? String ?? ""

这将检查返回的数据是否为String类型。如果没有,那么它将用空字符串初始化。