У меня возникают проблемы при преобразовании этого исходного кода 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
}
[mutableArray addObject:@(integer)];
фактически этот код оборачивает NSInteger (который является int) в объект NSNumber, который может быть вставлен в NSMutableArray. Прежде чем использовать целое число для выполнения расчетов, вы можете развернуть его с помощью [int integerValue]
,
Массивы Objective-C, оба NSArray
а также NSMutableArray
управлять упорядоченными коллекциями объекты. Таким образом, вы не можете добавить примитивный тип в массив напрямую. Вместо этого вам нужно обернуть ваши примитивы и сделать их объектами. Для номеров, вы хотите использовать NSNumber
, NSNumber
определяет набор методов, специально предназначенных для установки и доступа к значению как знаковый или беззнаковый символ, short int, int, long int, long long int, float или double или как BOOL.
Таким образом, чтобы сохранить целое число в NSArray
Вы хотели бы обернуть это так [NSNumber numberWithInt:yourInt]
Затем, когда вы хотите вытащить номер из этого, вы спросите его intValue
Ответ Fr4ncis также верен, это всего лишь краткий способ сделать это.