/ / Restkit Mapping Nested Array - object-c, ios5, restkit

Zostavenie mapovania vnoreného poľa - objekt-c, ios5, restkit

Mám otázku na mapovanie vnoreného poľa. na https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md je tu príklad na mapovanie vnorených objektov.

Čo však musím urobiť, ak je vnorený objekt súbor objektov, napríklad vyzerá JSON:

{ "articles": [
{ "title": "RestKit Object Mapping Intro",
"body": "This article details how to use RestKit object mapping...",
"author": [{
"name": "Blake Watters",
"email": "blake@restkit.org"
},
{
"name": "abc",
"email": "emailaddress"
}]
"publication_date": "7/4/2011"
}]
}

Ako by mali moje triedy vyzerať, aby sme získali množstvo autorov? To je kód z príkladu:

@interface Author : NSObject
@property (nonatomic, retain) NSString* name;
@property (nonatomic, retain) NSString* email;
@end



@interface Article : NSObject
@property (nonatomic, retain) NSString* title;
@property (nonatomic, retain) NSString* body;
@property (nonatomic, retain) Author* author; // should be an array of Author-Objects
@property (nonatomic, retain) NSDate*   publicationDate;
@end

Ako môžem povedať Restkitovi, že je to poleAutori a ak zmením triedu autora Atribút v článku na NSArray, ako Restkit vie, že v tomto NSArray by mali byť autorské objekty ... ??

Používam RKObjectMapping na mapovanie objektov z JSON na Objective-ca naopak.

odpovede:

7 pre odpoveď č. 1

Mali by ste sa ubezpečiť, že ste typ var zodpovedajúcim spôsobom nastavili:

@interface Article : NSObject
@property (nonatomic, retain) NSString* title;
@property (nonatomic, retain) NSString* body;
@property (nonatomic, retain) NSSet* authors;
@property (nonatomic, retain) NSDate*   publicationDate;
@end

Môže to fungovať s vyhlásením za NSArray, ale ja osobne používam RestKit s modelmi CoreData a vzťahy v týchto scenároch sú NSSet.

Ďalej musíte nastaviť mapovanie:

[articleMapping mapKeyPath:@"author" toRelationship:@"authors" withMapping:authorMapping];

3 pre odpoveď č. 2

Rozdelenie pomáha.

@interface Author : NSObject
@property (nonatomic, retain) NSString* name;
@property (nonatomic, retain) NSString* email;
@end



@interface Article : NSObject
@property (nonatomic, retain) NSString* title;
@property (nonatomic, retain) NSString* body;
@property (nonatomic, retain) NSArray* author;
@property (nonatomic, retain) NSDate*   publicationDate;
@end


//create the article mapping
RKObjectMapping *articleMapping = [RKObjectMapping mappingForClass:[Article class]];
//add rest of mappings here
[articleMapping addAttributeMappingsFromDictionary:@{
@"title":@"title"
}

//create the author mapping
RKObjectMapping *authorMapping = [RKObjectMapping mappingForClass:[Author class]];
//add rest of mappings here
[authorMapping addAttributeMappingsFromDictionary:@{
@"name":@"name"
}

//link mapping with a relationship
RKRelationshipMapping *rel = [RKRelationshipMapping relationshipMappingFromKeyPath:@"authors" toKeyPath:@"author" withMapping:authorMapping];

//add relationship mapping to article
[articleMapping addPropertyMapping:rel];

0 pre odpoveď č. 3

Celý reťazec Resnse to vezme ako nemenný slovník a potom priradíte autorské hodnoty k meniteľnému poľu.


0 pre odpoveď č. 4

Musíte držať svoje vnorené pole pomocou vlastnosti NSSet. Tu je kompletný sprievodca, ktorý vám určite pomôže https://medium.com/ios-os-x-development/restkit-tutorial-how-to-fetch-data-from-an-api-into-core-data-9326af750e10 .