在Objective-C中,我需要初始化一个nulls / nil数组(不确定使用哪一个)。
我有这段代码:
NSMutableArray * ObjectIndex = [[NSMutableArray alloc] initWithCapacity:maxObjectId];
for ( int i = 0; i < maxObjectId; i++ )
{
[ObjectIndex setObject:nil atIndexedSubscript:i];
}
我收到错误声明该对象不能为零。
我打算使用这个数组来存储某些索引中的对象,留下其他的nil(null?)
后面的代码:
for (Object * obj in objs)
{
ObjectIndex[obj.ID] = obj;
}
答案 0 :(得分:3)
这就是NSNull
的用途。来自文档:
NSNull类定义用于表示null的单例对象 集合对象中的值(不允许使用nil值)。
因此,您可以使用[NSNull null]
代替nil
填充数组:
for (int i = 0; i < maxObjectId; i++ )
{
ObjectIndex[i] = [NSNull null];
}
因为[NSNull null]
是单例对象,所以可以使用
if ([ObjectIndex[i] isEqual:[NSNull null]]) {
// "empty"
}
注意: Objective-C实例变量的名称通常以小写字母开头,因此objectIndex
将是一个更好的名称。
答案 1 :(得分:1)
为什么不使用数字作为键的NSMutableDictionary,而不是使用稀疏数组?这样您就不必担心使用空值进行预填充。
或者,如果你真的想使用数组,我建议用addObject:或insertObject:atIndex初始化:
答案 2 :(得分:0)
简单!你可以这样做
NSMutableArray * ObjectIndex = [[NSMutableArray alloc] initWithCapacity: maxObjectId];
for(int i=0 ; i< maxObjectId ; i++) {
[ObjectIndex addObject:[NSNull null]];
}