2

我正在尝试选择多个UITableViewCells,它工作正常,但我无法将字符串添加到我的NSMutableArray.

我正在使用此代码,并且我的日志始终为(空):

self.mutarray = [[NSMutableArray alloc] init];
[self.mutarray addObject:path]; //path is an NSString
NSLog(@"%@", self.mutarray);

它必须将路径添加UITableViewCellNSMutableArray,这甚至可能吗?

哦,我打电话给这个- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

4

4 回答 4

3

根据您的评论“它仅显示新添加的字符串,但不显示所有字符串。”。这是因为您在表视图的委托方法中分配 NSMutable Array。每次您点击单元格时,都会分配一个新数组。

在 ViewDidLoad 中分配您的“mutarray”数组

或者

只有当它为 nil 或为空时才分配它。

  if(!self.mutarray)
   self.mutarray = [[NSMutableArray alloc] init];
于 2013-08-25T22:28:55.780 回答
2

看来你还没有初始化你的数组。属性的一个好的做法是使用称为延迟初始化的东西。

添加此方法。

- (NSMutableArray *)mutarray
{
    if (!_mutarray) {
        _mutarray = [[NSMutableArray alloc] init];
    }
    return _mutarray;
}

因此,每次您请求数组时,访问器都会确保在返回对象之前创建了该对象。这是防御性编程的好方法。

于 2013-08-25T18:31:21.853 回答
1

在添加任何对象之前,您必须分配/初始化:

if(!mutarray)mutarray = [[NSMutableArray alloc]init];
[self.mutarray addObject:path];
于 2013-08-25T18:18:26.810 回答
0

您是否尝试添加路径的副本?由于 UITableViewCells 被重用,也许问题出在这个?

[self.mutarray addObject:[path copy]];
于 2013-08-25T22:24:54.690 回答