【发布时间】:2013-04-05 08:09:09
【问题描述】:
具体来说,假设我有一个 NSManagedObject,其“statusCode”属性设置为可转换,还有一个可逆值转换器子类可以从 NSStrings 转换为 NSNumbers,反之亦然。这个想法是使用值转换器,以便我接收 JSON 和来自 JSON 中的“状态”键的字符串自动映射到表示 NSManagedObject 中的状态代码的 NSNumber。相反,如果我将 NSManagedObject 上传到服务器,此时其状态属性将从 NSNumber 转换为 JSON 的字符串。
到目前为止一切顺利。但是,如果我还希望能够从 NSManagedObjec 的 status 属性中获取一个简单的 int,以便我可以将其与代码中的枚举进行 AND 操作,该怎么办? 也就是说,我会撒谎涵盖 3 种情况:
-
myManagedObject.status = [JSONResponse valueForKey:@"status"](应该用transformer来做NSString -> NSNumber) -
[JSONforUpload setValue:myManagedObject.status forKey:@"status"](应该用transformer来做NSNumber->NSString) - 从代码中的其他地方,类似于以下行的任何内容:
if(myManagedObject.status & statusInProgress) ...其中 statusInProgress 是一个枚举。
我想我可以暂时禁用值转换器,但是我不知道 NSManagedObject 是否有对它的引用,或者我是否应该从 NSValueTransformer 类中禁用它,这显然保留了一个已注册的转换器表?
我知道对于第三种情况,我可以只做[myManagedObject.status intValue],然后进行按位比较,但我想知道是否有任何方法可以让该对象的用户自动返回intValue]观点。
有什么想法吗?
【问题讨论】:
标签: ios cocoa core-data nsvaluetransformer