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
ありNSString *
、セッターが を受け入れ、NSData *
これを に変換しNSString *
てモデルに保存できるようにしたいと考えています。ただし、これを実行しようとすると、 を に代入しようとすると、コンパイラから警告が表示されNSData *
ますNSString *
。
myObject.contentData = someNSData;
-> Incompatible pointer types assigning to 'NSString *' from 'NSData *__strong'
これについてもっと良い方法はありますか、それともセッターを完全に避けて、コンパイラーの警告なしNSData *
にフィールドを渡して設定できるカスタム「セッター」を作成する必要がありますか?NSString *