XCode中,表视图的cellForRowAtIndexPath(XCode, table view

2019-09-29 05:54发布

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

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

}

Answer 1:

你肯定BOOKNAME是有效的NSString? 我将打破在该行的代码和类型

po bookName

在调试器,看看你是什么分配给bookName实际上是一个有效的NSString。

噢,并确保你在这个方法的最后返回一个有效的UITableViewCell,否则它保证你的代码将打破。



Answer 2:

替换此代码BooksBorrowed = newBooksBorrowed; 这种在功能

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

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



Answer 3:

我的问题的解决方案是:

我不得不改变我在那里我添加数据到表中的一部分:

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

这是因为表视图往往不考虑元素0的东西我也拿出newBooksBorrowed并将其与刚刚BooksBorrowed阵列工作。 :)谢谢大家帮我解决这个问题。



文章来源: XCode, table view cellForRowAtIndexPath