Filled NSArray 无意中丢失了它的内容
Posted
技术标签:
【中文标题】Filled NSArray 无意中丢失了它的内容【英文标题】:Filled NSArray unintentionally loses its content 【发布时间】:2011-10-16 18:19:57 【问题描述】:数组已正确填充,但当我再次尝试访问内容时,似乎又是空的了!!尝试发布尽可能多的代码。感谢您的帮助。
我在 .h 文件中声明 appData:
@interface userViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
NSArray *appData;
IBOutlet UIActivityIndicatorView *activityIndicator;
IBOutlet UILabel *status;
IBOutlet UITableView *mainTable;
@property (nonatomic, retain) NSArray *appData;
@property (nonatomic, retain) UIActivityIndicatorView *activityIndicator;
@property (nonatomic, retain) UILabel *status;
@property (nonatomic, retain) UITableView *mainTable;
- (IBAction) refresca: (id)sender;
- (void)getData: (NSString *)usuari: (NSString *)clau;
@end
在.m文件中合成并发布。 appData 在连接请求结束时被正确填充,然后,当我重新加载 tableview 时,当 numberOfRowsInSection 执行时(while 循环也是为了测试),appData 为空!
- (void)requestFinished:(ASIHTTPRequest *)request
NSLog(@"%@", [request responseString]);
self.appData = [[request responseString] componentsSeparatedByString: @"#"];
int x =0;
while (x<[appData count] - 1)
NSLog(@"Aplicaciones = %@",[appData objectAtIndex: x]);
x = x+1;
[activityIndicator stopAnimating];
activityIndicator.hidden = YES;
status.hidden = YES;
mainTable.hidden = NO;
[mainTable reloadData];
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
if ([appData count] != 0)
NSLog(@"Counter = %@",[appData objectAtIndex:0]);
return [appData count]-1;
【问题讨论】:
你能把你在“cellForRowAtIndexPath”中使用的代码贴出来吗?while (x<[appData count] - 1)
如果您的数组包含 1 个元素,它将不会进入循环,numberOfRowsInSection
将返回 0。我不明白您为什么在 @ 中放置一个 while 循环来调试代码987654325@.
是的,同意,我复制代码时出错了。已编辑。
【参考方案1】:
这里有几件事。
如果 appdata 的计数不为零,您在 numberOfRows
中的测试日志记录将导致应用挂起。
您确定您获得的 appData
对象与您在 requestFinished
中填充的对象相同吗?
我建议在 numberOfRows 中使用访问器,就像在 [self.appData count]
中一样,这可能会解决问题。
您从计数中减去一个是否有特定原因?因为这样你会从 tableView 中的数组中丢失一个元素
【讨论】:
[self.appData count] 很可能会修复它。 答案:是的,请求中填充的相同对象已完成。减去 1 是因为 is 和结束字符串且没有有用的数据可显示 您是否为 numberOfSections 委托方法返回至少 1 个? 已解决,在视图控制器完成启动之前触发了asirequest,因此未正确分配appData!谢谢你让我进去看看!以上是关于Filled NSArray 无意中丢失了它的内容的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 中动画插入/删除的 2 个 NSArray 的区别
CALayer似乎保留了它的内容——如何释放资源? [复制]