【发布时间】: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