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];