XCode,表视图cellForRowAtIndexPath

时间:2013-03-20 11:48:26

标签: xcode uitableview

我知道有一个简单的解决方案,但我似乎无法告诉:/

cell.textLabel.text = [BooksBorrowed objectAtIndex:0];

我在我的cellForRowAtIndexPath方法中,bookName是一个字符串。 它崩溃并且在日志中没有留下任何错误。我不知道我做错了什么。

bookName是我从JSON解析获得的字符串,并且包含内容。

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
 {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:CellIdentifier] autorelease];
    }

    NSLog(@"Book Name is %@", BooksBorrowed[0]);
    cell.textLabel.text = [BooksBorrowed objectAtIndex:0];

    return cell;
  }

这就是我获取BooksBorrowed数组的方式:

 - (void)updateMyBooks
  {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // Fetch data on a background thread:
        NSString *authFormatString =
        @"http://localhost:8888/Jineel_lib/bookBorrowed.php?uid=%d";

        NSString *urlString = [NSString stringWithFormat:authFormatString, 1];

        NSURL *url = [NSURL URLWithString:urlString];

        NSString *contents = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

        response1 = [contents JSONValue];

        if (contents) {
          NSMutableArray *newBooksBorrowed = [NSMutableArray array];

          // ... Parse JSON response and add objects to newBooksBorrowed ...
          BookName = [[NSString alloc]init];
          DateBorrowed = [[NSString alloc]init];
          BookID = [[NSString alloc]init];
          BookExtended = [[NSString alloc]init];
          BookReturned = [[NSString alloc]init];

          BookName = [response1 valueForKey:@"BookName"];
          BookID = [response1 valueForKey:@"BookID"];
          DateBorrowed = [response1 valueForKey:@"DateBorrowed"];
          BookExtended = [response1 valueForKey:@"Extended"];
          BookReturned = [response1 valueForKey:@"Returned"];
          NSLog(@"Book Name is %@", BookName);

          [newBooksBorrowed addObject:BookName];

          dispatch_sync(dispatch_get_main_queue(), ^{
          // Update data source array and reload table view.
          BooksBorrowed = newBooksBorrowed;
          [self.tableView reloadData];
        });
    }
});

}

3 个答案:

答案 0 :(得分:0)

你确定bookName是一个有效的NSString吗?我会破解那行代码并输入

po bookName

在调试器中查看您分配给bookName的内容实际上是否是有效的NSString。

哦,并确保在该方法结束时返回有效的UITableViewCell,否则保证您的代码会中断。

答案 1 :(得分:0)

在您的函数中将此代码替换为 BooksBorrowed = newBooksBorrowed;

BooksBorrowed = [[NSString alloc] initWithArray:newBooksBorrowed];

希望它有所帮助。快乐的编码.. 感谢。

答案 2 :(得分:0)

我的问题的解决方案是:

我不得不将我将数据添加到表中的部分更改为:

 NSString *string = [[NSString alloc] initWithFormat:@"%@",[BooksBorrowed objectAtIndex:indexPath.row]];

这是因为表视图往往不会占用元素0.我还拿出了newBooksBorrowed,它只适用于BooksBorrowed数组。 :)谢谢大家帮我解决它。