1

如果我尝试将打开的 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;
}

这两个 NSLogs 输出:我是(null)并且我在表视图中。我的标题是(空)

当我断点并查看抓取后的歌曲时,它完全是空的。

这使我认为您无法打开 UIDocument,将其粘贴在数组中并将其拉出数组。我对么?

4

1 回答 1

0

如果这首歌是 nil,那么几乎可以肯定数组是 nil。我注意到您将其称为 as_tableList和 as tableList。我的猜测是那些不是同一个指针。

尝试在 cellForRowAtIndexPath 中使用 _tableList。记录它以确认它不是零。

您可以通过在添加后立即记录 [_tableList lastObject] 来反驳您关于数组的理论。

于 2012-09-20T01:07:25.207 回答