Exi*_*ing 4 iphone objective-c foursquare ios restkit
我正在尝试研究如何使用restKit从foursquare获取一些数据.
我正在使用本教程.
使用此代码
我尝试做一些不同的,所以我尝试从类别中获取数据.
这是foursqure的json看起来像
{
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"
}
}
],
}
}
Run Code Online (Sandbox Code Playgroud)
这是获取统计数据的教程的一部分
@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;
Run Code Online (Sandbox Code Playgroud)
映射部分
RKObjectMapping *statsMapping = [RKObjectMapping mappingForClass:[Stats class]];
[statsMapping addAttributeMappingsFromArray:@[@"checkinsCount", @"tipCount", @"usersCount"]];
RKRelationshipMapping *statsRelation = [RKRelationshipMapping relationshipMappingFromKeyPath:@"stats" toKeyPath:@"stats" withMapping:statsMapping];
[venueMapping addPropertyMapping:statsRelation];
Run Code Online (Sandbox Code Playgroud)
映射后.
我可以轻松获得如下数据
NSLog(@"%i",venue.stats.checkinsCount);
Run Code Online (Sandbox Code Playgroud)
它将打印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;
Run Code Online (Sandbox Code Playgroud)
像这样添加映射
RKObjectMapping *categoriesMapping = [RKObjectMapping mappingForClass:[Categories class]];
[categoriesMapping addAttributeMappingsFromDictionary:@{@"name":@"name",@"pluralName":@"pluralName"}];
RKRelationshipMapping *cate = [RKRelationshipMapping relationshipMappingFromKeyPath:@"categories" toKeyPath:@"categories" withMapping:categoriesMapping];
[venueMapping addPropertyMapping:cate];
Run Code Online (Sandbox Code Playgroud)
现在我尝试获取类别名称
NSLog(@"%@",venue.categories.pluralName);
Run Code Online (Sandbox Code Playgroud)
但它总是为空
我想也许是数据类型的问题?
有三个名字,我不知道如何打印出所有这些名称.
对不起,我的母语不是英语,所以我无法很好地解释这种情况.
在JSON中,categories是一个数组,因此您尝试将其映射到的属性应为:
@property (strong, nonatomic) NSArray *categories;
Run Code Online (Sandbox Code Playgroud)
您记录代码然后需要更改以迭代类别:
for (Categories *category in venue.categories) {
NSLog(@"%@", category.pluralName);
}
Run Code Online (Sandbox Code Playgroud)
类Category具有误导性的名称,因为它实际上不是一个集合对象(正如您最初想要的那样).
| 归档时间: |
|
| 查看次数: |
2591 次 |
| 最近记录: |