向UITable添加数据时出现“NSInvalidArgumentException”错误?

时间:2011-02-19 20:20:01

标签: iphone iphone-sdk-3.0 ios4

所以这是我的应用程序的设置。在我的视图中做了load方法,我创建了一个NSMutableArray,并用对象列表初始化它(使用initWithObjects:方法)。这个数组被加载到表视图中没有任何问题。我还在导航栏中添加了一个“+”按钮,用于向我的表中添加数据。我的问题是,每当我按下“+”我的应用程序冻结,我得到SIGABRT信号。有人能告诉我我做错了吗?

我使用属性保留了数组,并且我已经合成了它。我也是用dealloc方法发布的。

我正在创建这样的数组:

NSMutableArray *array = [[NSArray alloc] initWithObjects:@"data 1", @"data 2", @"data 3", nil];
self.myArray = array;
[array release];

我正在导航栏中创建“+”按钮:

UIBarButtonItem *addDataButton = [[UIBarButtonItem alloc] initWithTitle:@"+" 
                                                                     style:UIBarButtonItemStyleBordered 
                                                                    target:self 
                                                                    action:@selector(addData)];

我添加数据的方法是:

- (void)addData {

    [myArray addObject:@"some data"];
    [self.tableView reloadData];

}

此外,如果这有帮助,我在控制台中收到的错误信息是:

2011-02-19 13:02:09.987 MyApp[480:307] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x1bee50
2011-02-19 13:02:10.020 MyApp[480:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x1bee50'

1 个答案:

答案 0 :(得分:2)

您正在创建NSArray而不是NSMutableArray,因此您无法向其添加对象。将数组初始化更改为:

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"data 1", @"data 2", @"data 3", nil];