如何将NSInteger插入NSMutableArray?

时间:2013-11-12 16:57:59

标签: c++ objective-c class vector nsmutablearray

我在将这个C ++源代码转换为Objective C时遇到了麻烦。我有一个类假设要在word列表中插入一个新的行号,如果行号已经打开则它只返回,在我的C ++中代码我使用矢量方法插入将行插入lineNumbers数组,但我似乎无法替代目标c。这是我的C ++代码

/*Constructor. */
UniqueWord::UniqueWord(const string word, const int line)
{
wordCatalog=word;
count = 0;
addLine(line);
}

//Deconstructor.
UniqueWord::~UniqueWord(void)
{
}


/* Adds a line number to the word's list, in sorted order.
   If the number already exists, it is not added again.
*/
void UniqueWord::addLine(const int line){
    int index = newIndex(line);
    ++count;
    if (index == -1)
    return;
    LineNumbers.insert(LineNumbers.begin() + index, line);//here i'm trying to figure out my substitute
}

这就是我目前在目标C中得到的:

@implementation UniqueWord

-(id)initWithString:(NSString*)str andline:(NSInteger)line{
_wordCatalog=str;
count=0;
//i could not find a substitute for addline(line) here
//what do i return as an id by the way?

}
-(void) addLine:(const int)line{
int index=newIndex(line);
++count;
if(index==-1)
    return;
 [ _LineNumbers //I dont' know what to add here
}

2 个答案:

答案 0 :(得分:1)

[mutableArray addObject:@(integer)];

实际上这段代码将NSInteger(它是一个int)包装成一个可插入NSMutableArray的NSNumber对象。在使用整数进行计算之前,您可以使用[int integerValue]打开它。

答案 1 :(得分:1)

Objective-C数组,NSArrayNSMutableArray管理对象的有序集合。因此,您无法直接将基本类型添加到数组中。相反,你需要做的是包装你的基元并使它们成为对象。对于数字,您需要使用NSNumberNSNumber定义了一组专门用于设置和访问值的方法,如有符号或无符号字符,short int,int,long int,long long int,float或double或BOOL。

所以要将一个整数存储到NSArray中你想要包装它[NSNumber numberWithInt:yourInt]那么当你想要从中提取数字时,你会要求它intValue < / p>

Fr4ncis提供的答案也是正确的,它只是一种简便的方法。