1

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

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

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

bookName 是我从 JSON Parsing 获得的一个字符串,它有内容。

(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];
        });
    }
});

}

4

3 回答 3

0

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

po bookName

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

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

于 2013-03-20T11:57:12.017 回答
0

替换此代码BooksBorrowed = newBooksBorrowed; 在你的函数中使用这个

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

希望能帮助到你。快乐编码..谢谢。

于 2013-03-20T12:14:54.547 回答
0

我的问题的解决方案是:

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

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

这是因为表格视图往往不会获取元素 0 的内容。我还取出了 newBooksBorrowed,它仅适用于 BooksBorrowed 数组。:) 谢谢大家帮我解决它。

于 2013-03-22T08:21:06.610 回答