如果我尝试将打开的UIDocument添加到数组中,我什么都没得到。这可能是它应该如何工作,我不确定。
- (void)loadDocAtURL:(NSURL *)fileURL withClassName:(NSString *)className {
id doc = [[NSClassFromString(className) alloc] initWithFileURL:fileURL];
[doc openWithCompletionHandler:^(BOOL success) {
if (!success) {
NSLog(@"Failed to open %@", fileURL);
return;
}
NSLog(@"I'm a doc. My class is %@, my title is %@", NSStringFromClass([doc class]), [doc title]);
dispatch_async(dispatch_get_main_queue(), ^{
//[self addOrUpdateEntryWithURL:fileURL metadata:metadata state:state version:version];
[_tableList addObject:doc];
[self.tableView reloadData];
NSLog(@"%d", _tableList.count);
});
}];
};
NSLog回归:我是一名医生。我的班级是宋,我的头衔是新歌
到目前为止一切顺利。
[self.tableView reloadData],正确地重新加载表并显示正确的单元格数,只有它们是空的,这就是原因:
- (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];
}
Song *theSong = [tableList objectAtIndex:indexPath.row];
NSLog(@"I am a %@", NSStringFromClass([theSong class]));
UILabel *titleLabel = (UILabel *)[cell viewWithTag:0];
UILabel *lyricLabel = (UILabel *)[cell viewWithTag:1];
NSLog(@"I'm in the table view. My title is %@", [theSong lyric]);
titleLabel.text = theSong.title;
lyricLabel.text = theSong.lyric;
[theSong closeWithCompletionHandler:^(BOOL success) {
// Check status
if (!success) {
NSLog(@"Failed to close %@", theSong.fileURL);
// Continue anyway...
}
}];
return cell;
}
这两个NSLog输出:我是(null),我在表视图中。我的头衔是(null)
当我抓住它时断断续续地看着宋,它完全是空的。
这让我觉得你无法打开一个UIDocument,将它粘在一个数组中并将其从数组中拉回来。我是对的吗?
答案 0 :(得分:0)
如果这首歌是nil,那么几乎可以肯定数组是零。我注意到你将其称为_tableList
和tableList
。我的猜测是那些指针不一样。
尝试在cellForRowAtIndexPath中使用_tableList。记录它以确认它是非零的。
您可以在添加后立即记录[_tableList lastObject]来反驳有关数组的理论。