0

JSON オブジェクトから取得されたデータの配列を使用して、TableViewContoller の TableViewCells を設定しようとしています。NSJSONSerialization は単に呼び出されていません。

DataTaskWithURL を使用してさまざまなことを試しました。悲しいことに、配列に0個のアイテムが見つかり、空になります。誰の助けにも感謝します!

@property NSArray *toothpastes;

@end

@implementation ToothpastChoicesTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *urlString = @"https://s3.amazonaws.com/mmios8week/toothpastes.json";
    NSURLSession *session = [NSURLSession sharedSession];

    [session dataTaskWithURL:[NSURL URLWithString:urlString] completionHandler:^
     (NSData *data,
      NSURLResponse *response,
      NSError *error) {

      if (error) {
         NSLog(@"%@", error);
     } else {

    self.toothpastes = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
    [self.tableView reloadData]; }

    }];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    NSLog(@"%lu", (unsigned long)self.toothpastes.count);

    return self.toothpastes.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellID" forIndexPath:indexPath];

    cell.textLabel.text = self.toothpastes[indexPath.row];

    return cell;
}
4

1 に答える 1

0

タスクを再開するのを忘れた

NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:urlString] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

    if (error) {
      NSLog(@"%@", error);
    } else {

     self.toothpastes = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
     [self.tableView reloadData]; 
    }
  }];
[task resume];
于 2015-11-02T19:09:19.450 に答える