我正在寻找一种检查任意值是否与给定属性兼容的方法。
如果尝试将NSNumber
设置为预期firstName
的{{1}},则会抛出此异常:
NSString
当处理动态和可能不好的数据时,比如从服务接收Fatal Exception: NSInvalidArgumentException
Unacceptable type of value for attribute: property = "name"; desired type = NSString; given type = __NSCFNumber;
时,我想在运行时检查值是否兼容。是否有任何简单而稳定的方法为属性类型和值的所有组合执行此操作?
答案 0 :(得分:1)
每个核心数据实体由实例NSEntityDescription
描述,
其中包含有关属性,属性及其属性的所有信息
类型等。
entity
的{{1}}属性是对此的引用
描述
这是一种可能的实施,作为“概念证明”。
NSManagedObject
如果值类型与实体类型兼容,设置值(并返回myObject.safeSetValue(value, forKey: key)
),否则返回true
。
false
答案 1 :(得分:0)
您可以使用Swift的功能,如下所示
let desiredVariable = responseData["key"] as? String ?? ""
这将检查返回的数据是否为String类型。如果没有,那么它将用空字符串初始化。