2013-05-25 4 views
4

Я пытаюсь изучить использование restKit, чтобы получить некоторые данные из foursquare.Резервное копирование вложенного массива с помощью Forsquare

Я использую это tutorial.

Используя этот code

Я пытаюсь сделать некоторые разные, поэтому я стараюсь, чтобы получить данные из категории.

Вот JSON foursqure выглядит как

{ 
    venue: { 
    id: "40a55d80f964a52020f31ee3", 
    name: "Clinton St. Baking Co. & Restaurant", 
    contact: { 
     phone: "6466026263", 
     formattedPhone: "(646) 602-6263" 
    }, 
    location: { 
     address: "4 Clinton St", 
     crossStreet: "at E Houston St.", 
     lat: 40.721294, 
     lng: -73.983994, 
     postalCode: "10002", 
     city: "New York", 
     state: "NY", 
     country: "United States", 
     cc: "US" 
    }, 
    canonicalUrl: "https://foursquare.com/v/clinton-st-baking-co--restaurant/40a55d80f964a52020f31ee3", 
    categories: [ 
     { 
     id: "4bf58dd8d48988d143941735", 
     name: "Breakfast Spot", 
     pluralName: "Breakfast Spots", 
     shortName: "Breakfast/Brunch", 
     icon: { 
      prefix: "https://foursquare.com/img/categories_v2/food/breakfast_", 
      suffix: ".png" 
     }, 
     primary: true 
     }, 
     { 
     id: "4bf58dd8d48988d16a941735", 
     name: "Bakery", 
     pluralName: "Bakeries", 
     shortName: "Bakery", 
     icon: { 
      prefix: "https://foursquare.com/img/categories_v2/food/bakery_", 
      suffix: ".png" 
     } 
     }, 
     { 
     id: "4bf58dd8d48988d16d941735", 
     name: "Café", 
     pluralName: "Cafés", 
     shortName: "Café", 
     icon: { 
      prefix: "https://foursquare.com/img/categories_v2/food/cafe_", 
      suffix: ".png" 
     } 
     } 
    ], 

    } 
} 

и здесь является частью учебника, что получить статистику

@interface Venue : NSObject 

@property (strong, nonatomic) NSString *name; 
@property (strong, nonatomic) Stats *stats; 


@interface Stats : NSObject 

@property (nonatomic, strong) NSNumber *checkinsCount; 
@property (nonatomic, strong) NSNumber *tipCount; 
@property (nonatomic, strong) NSNumber *usersCount; 

отображения часть

RKObjectMapping *statsMapping = [RKObjectMapping mappingForClass:[Stats class]]; 
    [statsMapping addAttributeMappingsFromArray:@[@"checkinsCount", @"tipCount", @"usersCount"]]; 
    RKRelationshipMapping *statsRelation = [RKRelationshipMapping relationshipMappingFromKeyPath:@"stats" toKeyPath:@"stats" withMapping:statsMapping]; 
    [venueMapping addPropertyMapping:statsRelation]; 

после отображения.

Я могу легко получить данные следующим образом

NSLog(@"%i",venue.stats.checkinsCount); 

и распечатывает checkinsCount номер

теперь я пытаюсь получить данные категории. Я исправляю код для получения новых данных.

добавить что-то вроде этого

@interface Venue : NSObject 

@property (strong, nonatomic) NSString *name; 
@property (strong, nonatomic) Categories *categories; 

@interface Categories : NSObject 

@property (nonatomic, strong) NSString *name; 
@property (nonatomic ,strong) NSString *pluralName; 

добавить отображение как этот

RKObjectMapping *categoriesMapping = [RKObjectMapping mappingForClass:[Categories class]]; 
    [categoriesMapping addAttributeMappingsFromDictionary:@{@"name":@"name",@"pluralName":@"pluralName"}]; 
    RKRelationshipMapping *cate = [RKRelationshipMapping relationshipMappingFromKeyPath:@"categories" toKeyPath:@"categories" withMapping:categoriesMapping]; 
    [venueMapping addPropertyMapping:cate]; 

Теперь я пытаюсь получить название категории

NSLog(@"%@",venue.categories.pluralName); 

но всегда получают нулевой

Я думаю, майб e проблема, которая находится в типе данных?

Существует три имени, и я не знаю, как их все распечатать.

Извините, мой родной язык не английский, поэтому я не могу объяснить ситуацию очень хорошо.

+0

Когда вы говорите, что это не работает, что вы имеете в виду? Что вы ожидаете от того, что происходит на самом деле? – Steve

+0

Подождите, я забыл набрать это, спасибо – Exiling

ответ

7

В JSON, категория является массивом, поэтому свойство вы пытаетесь отобразить его в должен быть:

@property (strong, nonatomic) NSArray *categories; 

Вы вход кода, то необходимо изменить, чтобы перебирать категории:

for (Categories *category in venue.categories) { 
    NSLog(@"%@", category.pluralName); 
} 

Категории классов имеют вводящее в заблуждение имя, поскольку это не объект коллекции (как вы, кажется, изначально предназначались).

+0

Я пробовал, но данные, которые я печатаю, выглядят как <Категории: 0x18d29e40>, <Категории: 0x18daf3d0>, Как я могу получить название категории?tks – Exiling

+0

Получил это, я думаю, что забыл, что это тип массива. Сделайте глупую ошибку. Большое спасибо!! – Exiling

+0

Голосовать за категорию итерации –

Смежные вопросы