我正在尝试覆盖 an 的设置器,NSManagedObject
以便我可以传入不同类型的对象,进行转换,然后设置属性。像这样的东西:
- (void)setContentData:(NSData *)contentData
{
NSString *base64String;
// do some stuff to convert data to base64-encoded string
// ...
[self willChangeValueForKey:@"contentData"];
[self setPrimitiveValue:base64String forKey:@"contentData"];
[self didChangeValueForKey:@"contentData"];
}
因此,在这种情况下contentData
, my 的字段NSManagedObject
是 an NSString *
,我想让 setter 接受 anNSData *
然后我将其转换为 anNSString *
并将其保存到模型中。但是,如果我尝试这样做,我会从编译器收到有关尝试将 an 分配给 an 的NSData *
警告NSString *
:
myObject.contentData = someNSData;
-> Incompatible pointer types assigning to 'NSString *' from 'NSData *__strong'
有没有更好的方法来解决这个问题,或者我应该完全避免设置器并创建自定义“设置器”,允许我在没有编译器警告的情况下传入NSData *
和设置字段?NSString *