다음과 같은 문제가 있습니다.ios Mantle - 기본 initWithDictionary를 올바르게 재정의합니다.
Menu.h 및 Item.h 클래스가 있습니다. 메뉴는 레스토랑의 메뉴와 같으며 여러 카테고리 (예 : 전채, 샐러드 등)가 있으며 각 메뉴에는 여러 항목이 연결되어 있습니다. 따라서 Menu.h에는 itemList라는 NSArray 속성이 있습니다. 맨틀을 사용하여 이러한 객체를 자동으로로드하려고합니다. 서버 널 응답이 itemList에 대한 온다에서 itemList에가, 즉, null의 경우, 다음 내가 원하는 :
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;
}
내 질문은 다음과 같다 기본 initWithDictionary 동작을 무시하여 Item.h의 생성자에서 무제한의 OBJECT 객체를 반환합니다. 어떻게해야합니까? Menu.h가 형성 될 때 null이기 때문에 코드는이 생성자에 놀랍게 도달하지 못했습니다. (NSValueTransformer)도 지정했습니다. 감사!
당신이 이러한 개체를 생성하는 데 사용하는 코드를 추가 할 수 있습니다
이 같은
Menu
모델을 변경하여 기본값을 지정할 수 있습니다? –안녕하세요 @DavidCaunt 이걸 살펴 줘서 고마워. 나는 backend rest API를 호출하여 responseObject라는 JSON 사전을 얻는다. 그런 다음 itemList로 전체 메뉴를 만들고이 코드로 링크를 추가합니다. 'self.menuList = [MTLJSONAdapter modelsOfClass : [Menu class] fromJSONArray : responseObject error : nil]; ' 여기서 menuList는 전체 메뉴 목록입니다. 레스토랑 (이 특정 응용 프로그램의 경우) –
실제 json은 여기에 있습니다. www.grubble.clipr.me/api/v1/restaurant/menu/?restaurant=2 –