具体来说,假设我有一个NSManagedObject,其中的“statusCode”属性设置为可变形,并且有一个可逆值变换器子类可以从NSStrings转换为NSNumbers,反之亦然。我们的想法是使用值转换器,以便接收JSON,并且JSON中的“状态”键中的字符串自动映射到表示NSManagedObject中的状态码的NSNumber。相反,如果我要将NSManagedObject上传到服务器,那么它的状态属性将从NSNumber转换为JSON的字符串。是否可以有条件地禁用NSManagedObject属性的NSValueTransformer?
到目前为止这么好。但是,如果我也希望能够从NSManagedObjec的状态属性中获得一个简单的int值,那么我可以在代码中使用enums来进行AND操作呢? 也就是说,我说谎覆盖三种情况:
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]
自动从该对象的用户角度返回。
任何想法?
这是我的第一种方法,是的,它的工作原理。如果不是,我可能会回到那个。但我想知道是否有办法将它关闭并保留可转换的属性。 – SaldaVonSchwartz 2013-04-05 08:15:42