-1

我无法将此 C++ 源代码转换为 Objective C。我有一个类假设将新行号插入到单词列表中,如果行号已经打开,那么它只会返回,在我使用的 C++ 代码中向量方法 insert 将行插入 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
}

这就是我迄今为止在Objective 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
}
4

2 回答 2

1
[mutableArray addObject:@(integer)];

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

于 2013-11-12T17:02:25.137 回答
1

Objective-C 数组,两者都NSArray管理NSMutableArray有序的对象集合。因此,您不能直接将原始类型添​​加到数组中。相反,您需要做的是包装您的原语并使其成为对象。对于数字,您需要使用NSNumber. NSNumber定义了一组方法,专门用于将值设置和访问为有符号或无符号 char、short int、int、long int、long long int、float 或 double 或 BOOL。

所以要将一个整数存储到一个NSArray你会想要像这样包装它[NSNumber numberWithInt:yourInt]然后当你想从中拉出数字时,你会要求它intValue

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

于 2013-11-12T17:15:25.387 回答