【问题标题】:Passing NSMutableArray from Delegate to tableview将 NSMutableArray 从 Delegate 传递给 tableview
【发布时间】:2026-01-25 17:00:01
【问题描述】:

我想将 NSMutableArray 从委托传递到 tableview 控制器然后重新加载它的数据时遇到了问题, 我需要这样做,因为我在委托中有我的套接字,当它接收到数据时,它返回一个 NSMutableArray,它应该是 tableview 的数据,不幸的是它传递了 nil :( 我会告诉你我的代码:D

代表:

为了使用get-set,我已经合成了tableviewcontroller

@property(nonatomic, retain) DownloadsController *downloads_Controller;

现在是代码:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"downloads"] || [elementName isEqualToString:@"results"]){
    if([elementName isEqualToString:@"downloads"]){
        NSLog(@"downloads found...  reloading table");
        downloads_Controller.downloads= xmlArray;
        NSLog(@"%@ passed from %@", self.downloads_Controller.downloads, xmlArray); // <-- first value return nil, while xmlArray displays properly
        [downloads_Controller.tableView reloadData];
    }
}
}

下载控制器:

这里我做了和上面一样的,为了使用get-set

@property(nonatomic, retain) NSMutableArray *downloads;

不幸的是,当解析器委托在 AppDelegate 中被调用时,会发生这种情况:

2010-01-06 13:43:41.770 iMule[613:20b] downloads found...  reloading table
2010-01-06 13:43:41.772 iMule[613:20b] (null) passed from ( <-- FIRST ARGUMENT NULL :(
    {
    name = joe;
    type = text;
    },
    {
    name = joe2;
    type = text;
    }
 )

有人有什么建议吗???

谢谢=D

【问题讨论】:

  • 套接字是否在不同的线程上接收数据?
  • 不应该 downloads_Controller.downloads= xmlArray;self.downloads_Controller.downloads= xmlArray; 吗?还是打错字了?
  • self 是首选,但没有 self 它只会跳过访问器,如果您使用的是键值编码 (KVC) 之类的东西,这会很糟糕。
  • 我也试过 self :( 不幸的是值仍然是(null)你有什么建议吗?为什么我不能将一个值从一个视图传递到另一个视图?

标签: iphone cocoa-touch uitableview nsmutablearray


【解决方案1】:

做到了!!! 我完全忘记在 IB 中连接 tableviewcontroller 了!现在一切都完美了!!!

感谢您的回答:D

【讨论】: