将NSMutablearray复制到另一个数组

6
我尝试将一个NSMutableArray复制到另一个数组,但在UITableView中没有显示任何内容。
NSMutableArray *objectsToAdd= [[NSMutableArray alloc] initWithObjects:@"one",@"two"];

NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:objectsToAdd,nil];

NSMutableArray *list = [[NSMutableArray alloc] init];

[self.list addObjectsFromArray:myArray];

什么都没有显示出来!是怎么回事?

我的应用程序崩溃了,因为我在我的NSMutableArray中没有nil,我该如何添加nil?addobject:nil不起作用,它会导致应用程序崩溃:

static NSString * DisclosureButtonCellIdentifier = 
@"DisclosureButtonCellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: 
                         DisclosureButtonCellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                   reuseIdentifier: DisclosureButtonCellIdentifier]
            autorelease];
}
NSUInteger row = [indexPath row];

NSString *rowString =nil;

rowString = [list objectAtIndex:row];


cell.textLabel.text = rowString;

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
[rowString release];
return cell;

2
为什么应该显示某些内容?请发布您的cellForRowAtIndexPath:方法的代码。 - Morion
如何使用addObject向NSMutableArray添加nil值?这会在cellForRowAtIndexPath函数中导致我的应用程序崩溃。请提供解决方案。 - stefanosn
4个回答

20

你最初调用alloc一个NSMutableArray的时候很可能会崩溃,因为在参数列表中没有nil终止符。

此外,你有一个局部变量list和一个属性list,请确保你实例化了你认为的对象。你可能需要这样做:

NSMutableArray *objectsToAdd= [[NSMutableArray alloc] initWithObjects:@"one",@"two", nil];

NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:objectsToAdd,nil];

self.list = [[NSMutableArray alloc] init];

[self.list addObjectsFromArray:myArray];

NSMutableArray *myArray = [[NSMutableArray alloc] initWithArray:objectsToAdd];initWithObjects方法期望传入单个对象,而不是可变数组。另外,myArray并非可变数组。 - Hahnemann

3
这可能会对您有所帮助:
NSMutableArray *result  = [NSMutableArray arrayWithArray:array];

或者
NSMutableArray *result = [array mutableCopy]; //recommended

1

有几个问题... 其中一个问题是你正在使用'initWithObjects'并添加先前的数组。这似乎是不需要的行为,因为您最有可能想要将字符串@"one"和@"two"添加到数组中。您可能想使用initWithArrayaddObjectsFromArray。 (以您现在的方式进行操作将会将NSMutableArray(而不是其对象)添加到列表中)

第二个问题,当您使用initWithObjects时,您需要列出每个对象,然后用nil值终止列表。(docs)换句话说,您需要使用...

NSMutableArray *objectsToAdd = [[NSMutableArray alloc] initWithObjects:@"One", @"Two", nil];

0
问题可能是第4行中list的本地声明与属性冲突。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接