我正在尝试将场地保存为
NSArray
。地点是 NSDictionary
响应中的数组。我想要一个包含所有场地的 NSArray
,这样我就可以填满一张桌子。
NSURL *url = [[NSURL alloc] initWithString:@"https://api.foursquare.com/v2/venues/search?ll=40.7,-74&query=dog&limit=10"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSDictionary *responseData = [JSON objectForKey:@"response"];
self.venues = responseData[@"venues"];
[self.tableView setHidden:NO];
[self.tableView reloadData];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
[operation start];
四个正方形部分
response: {
venues: [{
id: "4ea2c02193ad755e37150c15"
name: "The Grey Dog"
contact: {
phone: "+12129661060"
formattedPhone: "+1 212-966-1060"
}
location: {
address: "244 Mulberry St"
crossStreet: "btwn Spring & Prince St"
lat: 40.723096
lng: -73.995774
distance: 2595
postalCode: "10012"
city: "New York"
state: "NY"
country: "United States"
cc: "US"
}
您不需要一个新的数组来容纳所有场地。
首先创建一个全局
NSDictionary
,例如:
NSDictionary* venuesDict;
@property (nonatomic, retain) NSDictionary* venuesDict;
并合成它。然后您可以在上面的代码中分配它,如下所示:
venuesDict = [[JSON objectForKey:@"response"] objectForKey:@"venues"];
NSLog(@"%@", venuesDict); //everything should work up to here!
假设 NSLog 打印您在问题中发布的输出(但将场地作为第一个对象),您可以填充如下表格:
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [[venuesDict objectForKey:@"venues"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [[venuesDict objectForKey@"venues"] objectForKey:@"name"];
return cell;
}