次のようなモデルがあるとします。
#import <Mantle/Mantle.h>
#import "MyCustomObject.h"
@interface MyModel : MTLModel <MTLJSONSerializing>
@property (nonatomic, copy, readonly) NSString *UUID;
@property (nonatomic, copy) NSString *someProp;
@property (nonatomic, copy) MyCustomObject *anotherProp;
@end
#import "MyModel.h"
@implementation MyModel
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"UUID": @"id",
@"anotherProp": NSNull.null
};
}
}
@end
ご覧のとおりanotherProp
、NSCoding のシリアル化中は無視し、「UUID」を「id」に再マップします。YapDatabase で、私は
[transaction setObject:myModelObj forKey:@"key_1" inCollection:@"my_collection"]
anotherProp
しかし、カスタムJSONKeyPathsByPropertyKey
メソッドにもかかわらずシリアル化しようとすると、次のエラーが発生します:
*** Caught exception encoding value for key "anotherProp" on class MyModel: -[YapDatabase encodeWithCoder:]: unrecognized selector sent to instance 0xc989630
YapDatabase を使用するには、カスタムシリアライザーを作成する必要がありますJSONKeyPathsByPropertyKey
か?