如何使用insertObject AtIndex

时间:2013-06-08 18:11:14

标签: objective-c nsmutablearray

在我的应用程序中有4个textFields(0,1,2,3)。当用户键入内容并点击return-Key时,我想将此textField的内容保存在数组中。但我需要正确的订单。例如,当用户首先在textField 2中键入一些信息并且我调用addObject:时,内容位于索引0.现在我尝试使用inserObjectAtIndex:但它不起作用,因为我的数组为空( count = 0)。尝试initWithCapacity也不是解决方案。我没有尝试首先用空字符串初始化数组,但这将是一个糟糕的解决方案。那我怎么能以聪明的方式解决这个问题?有什么建议??

1 个答案:

答案 0 :(得分:2)

我会使用包含四个NSNull对象的NSMutableArray,并在您想要保存字符串时替换相应的对象。

这样的事情:

NSMutableArray *dataSource = [NSMutableArray arrayWithArray:@[[NSNull null], [NSNull null], [NSNull null], [NSNull null]]];

// check if object is set
if ([dataSource objectAtIndex:0] != [NSNull null]) {
    // object is set
    textField0.text = [dataSource objectAtIndex:0];
}
else {
    // object is not set
    textField0.text = nil;
}

// set object
[dataSource replaceObjectAtIndex:0 withObject:@"Foobar"];

由于您正在处理NSStrings,因此您也可以使用空字符串@""作为占位符。这应该使一切变得更容易。但是,填充NSNull对象的NSArray是更通用的方法。