使用Foursquare的API将场地纳入NSArray

时间:2013-02-20 13:16:44

标签: iphone xcode api nsarray foursquare

我正在尝试将场地保存到NSArray。 Venue是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"
        }

Link to Foursquare API

1 个答案:

答案 0 :(得分:2)

您不需要新阵列来容纳所有场地。

首先创建一个全局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;
}