Как вставить NSInteger в NSMutableArray?

У меня возникают проблемы при преобразовании этого исходного кода C ++ в Objective C. У меня есть класс, который предполагает вставку нового номера строки в список слов, если номер строки уже включен, то он просто возвращается, в моем коде 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
}

-1

Решение

[mutableArray addObject:@(integer)];

фактически этот код оборачивает NSInteger (который является int) в объект NSNumber, который может быть вставлен в NSMutableArray. Прежде чем использовать целое число для выполнения расчетов, вы можете развернуть его с помощью [int integerValue],

1

Другие решения

Массивы Objective-C, оба NSArray а также NSMutableArray управлять упорядоченными коллекциями объекты. Таким образом, вы не можете добавить примитивный тип в массив напрямую. Вместо этого вам нужно обернуть ваши примитивы и сделать их объектами. Для номеров, вы хотите использовать NSNumber, NSNumber определяет набор методов, специально предназначенных для установки и доступа к значению как знаковый или беззнаковый символ, short int, int, long int, long long int, float или double или как BOOL.

Таким образом, чтобы сохранить целое число в NSArray Вы хотели бы обернуть это так [NSNumber numberWithInt:yourInt] Затем, когда вы хотите вытащить номер из этого, вы спросите его intValue

Ответ Fr4ncis также верен, это всего лишь краткий способ сделать это.

1

По вопросам рекламы [email protected]