4

私の Core Dataでは、すべてのプロパティに空白が削除された文字列のみが含まれていることNSManagedObjectを確認したいと思います。NSString

次のように、各セッターメソッドをオーバーライドすることでこれを達成できることを認識しています。

- (void)setSomeProperty:(NSString *)someProperty
{
    someProperty = [someProperty stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    if ((!someProperty && !self.someProperty) || [someProperty isEqualToString:self.someProperty]) return;

    [self willChangeValueForKey:@"someProperty"];
    [self setPrimitiveValue:someProperty forKey:@"someProperty"];
    [self didChangeValueForKey:@"someProperty"];
}

ただし、特に私の管理対象オブジェクトにはかなりの数のNSStringプロパティがある可能性が高いため、これは多くのコードを記述する必要があるように思えます。

もっと簡単な方法はありますか?

4

3 に答える 3

5

カスタムNSValueTransformerフォーを作成し、すべてのプロパティをモデル エディターで新しいトランスフォーマーにNSString割り当てることができます。NSString

@interface StringTransformer: NSValueTransformer {}
@end

@implementation StringTransformer
+ (Class)transformedValueClass { 
  return [NSString class]; 
}

+ (BOOL)allowsReverseTransformation { 
    return YES;
}

- (id)transformedValue:(id)value {
    return value;
}

- (id)reverseTransformedValue:(id)value {
    return [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
@end
于 2013-08-21T18:33:14.447 に答える