我知道有一个简单的解决方案,但我似乎无法告诉:/
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];
});
}
});
}
答案 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数组。 :)谢谢大家帮我解决它。