私は次の問題に直面しています..
クラスMenu.hとItem.hがあります。メニューはレストランのメニューのようなもので、複数のカテゴリ (前菜、サラダなど) があり、各メニューには複数のアイテムが関連付けられています。したがって、Menu.h には itemList という NSArray プロパティがあります。Mantle を使用してこれらのオブジェクトを自動的にロードしようとしています。
Menu.h
@interface Menu : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSArray *itemList;
@end
と
Menu.m
@implementation Menu
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
// model_property_name : json_field_name
return @{
};
}
+ (NSValueTransformer *)itemListJSONTransformer {
return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass: Item.class];
}
- (instancetype)initWithDictionary:(NSDictionary *)dictionaryValue error:(NSError **)error {
self = [super initWithDictionary:dictionaryValue error:error];
if (self == nil) return nil;
return self;
}
と
Item.m
- (instancetype)initWithDictionary:(NSDictionary *)dictionaryValue error:(NSError **)error {
self = [super initWithDictionary:dictionaryValue error:error];
if (self == nil) {
//DO SOMETHING WITH SELF AND RETURN A NON NIL OBJECT
return self;
}
return self;
}
私の質問は次のとおりです。itemListがnullの場合、つまり、サーバーからのnull応答がitemListに送信された場合、デフォルトのinitWithDictionary動作をオーバーライドして、Item.hのコンストラクターから何かを実行し、NON NIL OBJECTを返すにはどうすればよいですか私がやる?Menu.h が形成されたときに null だったため、コードはこのコンストラクターに到達していません.. (NSValueTransformer) も指定しました..リードはありますか? ありがとう!