Ios 如何向NSMutableArray添加字符串
我正在尝试选择多个Ios 如何向NSMutableArray添加字符串,ios,uitableview,nsmutablearray,Ios,Uitableview,Nsmutablearray,我正在尝试选择多个uitableviewcell,它工作正常,但我无法将字符串添加到我的NSMutableArray 我正在使用此代码,并且我的日志始终为(null): 它必须将UITableViewCell的路径添加到NSMutableArray中,这可能吗 哦,我在-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath中调用它,在添加任何对象之前,必须先alloc/ini
uitableviewcell
,它工作正常,但我无法将字符串添加到我的NSMutableArray
我正在使用此代码,并且我的日志始终为(null):
它必须将UITableViewCell
的路径添加到NSMutableArray
中,这可能吗
哦,我在
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath中调用它,在添加任何对象之前,必须先alloc/init:
if(!mutarray)mutarray = [[NSMutableArray alloc]init];
[self.mutarray addObject:path];
您似乎还没有初始化数组。属性的一个良好实践是使用一种称为惰性初始化的方法
添加此方法
- (NSMutableArray *)mutarray
{
if (!_mutarray) {
_mutarray = [[NSMutableArray alloc] init];
}
return _mutarray;
}
因此,每次请求数组时,访问器都会确保在返回对象之前创建了该对象。这是一种很好的防御性编程方法。是否尝试添加路径副本?
由于UITableViewCells已恢复,问题可能在于此
[self.mutarray addObject:[path copy]];
根据您的评论,“它只显示新添加的字符串,而不是所有字符串。”。这是因为您正在表视图的委托方法中分配NSMutable数组。每次您点击单元格时,都会分配一个新数组
在ViewDidLoad中分配“mutarray”数组
或
仅当它为零或为空时分配它
if(!self.mutarray)
self.mutarray = [[NSMutableArray alloc] init];
你分配并初始化了mutarray吗?你从来没有真正创建过数组。声明数组指针不会创建数组。很抱歉,我已对其进行了初始化和分配,只是忘记了添加它,它出现在上面的if语句中。现在它只显示新添加的字符串,而不是所有的字符串。对不起,我已经初始化并分配了它,我只是忘记添加它,它在上面的if语句中。现在它只显示新添加的字符串,而不是所有字符串;要-(void)viewDidLoad,但它仍然只显示最新的字符串,而不是最新的和其他的,预览字符串扫描您请在-(void)tableView:(UITableView*)tableView DidSelectRowatineXpath:(NSIndexPath*)IndeXpath中发布更新的代码,我修复了它,对此表示抱歉。你完全正确,我忘记从didSelectRowAtIndexPath方法中删除alloc init路径。现在是1:09,所以我想我得睡觉了,这样我才能想得更好:)再次感谢!愚蠢的问题:您是否也在DidSelectRowatineXpath中执行init和alloc操作?如果是,请尝试在ViewWillDisplay中执行这部分代码。
if(!self.mutarray)
self.mutarray = [[NSMutableArray alloc] init];