具体来说,假设我有一个带有" statusCode"的NSManagedObject。属性设置为可转换,可逆值变换器子类从NSStrings转换为NSNumbers,反之亦然。我的想法是使用值变换器,以便从状态"接收JSON和字符串。 JSON中的键自动映射到NSNumber,NSNumber表示NSManagedObject中的状态代码。相反,如果我要将NSManagedObject上传到服务器,那么它的status属性将从NSNumber转换为JSON的字符串。
到目前为止一切顺利。但是,如果我还希望能够从NSManagedObjec的状态属性中获取一个简单的int,那么我可以将它与代码中的枚举一起使用? 也就是说,我会骗到3个案例:
myManagedObject.status = [JSONResponse valueForKey:@"status"]
(应该使用变换器来执行NSString - > NSNumber)[JSONforUpload setValue:myManagedObject.status forKey:@"status"]
(应该使用变换器来执行NSNumber-> NSString)if(myManagedObject.status & statusInProgress) ...
,其中statusInProgress是枚举。我想我可以暂时禁用值转换器,但是我不知道NSManagedObject是否有对它的引用,或者我是否应该从NSValueTransformer类中禁用它,这显然保留了一个已注册的变换器表?
我知道,对于第三种情况,我可以[myManagedObject.status intValue]
然后进行按位比较,但我想知道是否有任何方式我可以拥有intValue]
从这个对象的角度来看,自动返回。
有什么想法吗?
答案 0 :(得分:0)
为什么不为JSON转换编写另外两个方法并将属性保留为整数?那么你将拥有两个世界中最好的。
答案 1 :(得分:0)
一种方法是向变换器添加属性,以便在字符串和枚举反转值之间切换。虽然我最终做了一个enum< - >字符串转换器并且没有在可转换属性上使用它(而是将托管对象的属性保留为int),而是仅为JSON< - >实例化它。对象转换。之后,在整个代码中我只是按原样使用int属性。
答案 2 :(得分:0)
假设此实体具有自己的不同托管对象子类,您还可以简单地向该类添加另一对访问器方法,以封装NSNumber
和int
值之间的转换。 (或者添加一个瞬态属性,如果它需要成为模型的一部分。但是你仍然需要编写自定义访问器来同步这些值。)