Добавление «->» в цель C

0

Итак, я довольно новичок в объекте c, и я создаю класс согласования, внутри класса у меня есть метод, который добавляет слово из книги в aa _ListofPtrsToUniqueWords, uniqueWord - это еще один класс, который я создал для хранения каталогизируемого слова, в c++ мой метод Добавляет UniqueWord к массиву уникальных слов, если он уже существует, он пропускает слово, но он добавляет номер строки в список _CurrentLineArray, это метод, который я использовал в c++

   /* Attempts to add a word to the concordance. If it already exists, the existing     entry is updated with the new line. */
void Concordance::add(const string word, const int line)
{
   int insertion, index;
    UniqueWord *uw = new UniqueWord(word, line);//creates the uniqueWord object
    insertion = newIndex(*uw, index);//figures out where my word belongs in my array to be alphabetized 
    if (insertion == -1)
      {
    // The word already exists - add a line number.
    delete uw;
    ListOfUniqueWordsPtrs[index]->addLine(line);//I'm trying to do this in Objective C. 
//My friend recommended i do this but i never asks what exactly does it do, addLine is a Unique word method
    }
    else
    {
    ListOfUniqueWordsPtrs.insert(ListOfUniqueWordsPtrs.begin() + insertion, uw);
    }
}

Теперь я пытаюсь сделать то же самое в Objective C, но я не понимаю, что этот символ делает "->", мой друг просто рекомендовал мне это сделать, но я не понимаю, что он делает, и как я могу это вставить в Цель C

-(void) add:(NSString *)currentWordBeingCatalog and:(NSNumber*)CurrentLineNumber{
NSInteger insertion, index=0;

UniqueWord *CurrentWord=[[UniqueWord alloc] initWithString:currentWordBeingCatalog andline:CurrentLineNumber];
insertion=[self NewIndexToFindOutIf:CurrentWord is:[NSNumber numberWithLong:index]];
if(insertion==-1){
    /*If the word already exist, it would delete the word and add the line number to the _linenumber NSMutableArray*/
    CurrentWord=NULL;
    [_ArrayOfPtrsToUniqueWords objectAtIndex:index]->[CurrentWord addALineNumberToCurrentLineNumberArray:CurrentLineNumber]];//This is where i'm trying to figure out what to do
}else{
    [_ArrayOfPtrsToUniqueWords insertObject:CurrentWord atIndex:(0+insertion)];
 }

}

Надеюсь, я дам вам ребята достаточно информации об этом коде, спасибо

  • 1
    Возможно, было бы проще, если бы ваши имена были более похожими между ними, но вы этого хотите? [[_ArrayOfPtrsToUniqueWords objectAtIndex:index] addALineNumberToCurrentLineNumberArray:CurrentLineNumber]] Вы не хотите -> . Вы получаете объект через objectAtIndex , затем вызываете его, добавляя вокруг него еще один набор [] и добавляя имя сообщения. Посмотрите на [[UniqueWord alloc] initWithString... в качестве примера.
Теги:
class
object
methods

2 ответа

2
Лучший ответ

Это синтаксис, который вы ищете:

[[_ArrayOfPtrsToUniqueWords objectAtIndex:index] addALineNumberToCurrentLineNumberArray:CurrentLineNumber];

... то есть вы просите массив вернуть один из его элементов, а затем вы просите, чтобы этот элемент добавлял номер строки.

Вы можете сломать это, если хотите:

UniqueWord *existingWord = [_ArrayOfPtrsToUniqueWords objectAtIndex:index];
[existingWord addALineNumberToCurrentLineNumberArray:CurrentLineNumber];

Вы также можете использовать NSArray массива непосредственно в NSArray и NSMutableArray, поэтому если _ArrayOfPtrsToUniqueWords является NSMutableArray, вы можете сделать это:

UniqueWord *existingWord = _ArrayOfPtrsToUniqueWords[index];
[existingWord addALineNumberToCurrentLineNumberArray:CurrentLineNumber];

или это:

[_ArrayOfPtrsToUniqueWords[index] addALineNumberToCurrentLineNumberArray:CurrentLineNumber];
  • 0
    Спасибо, это точное объяснение, которое я искал.
2

-> делает что-то похожее в Objective-C на то, что он делает в C++, помещается после указателя на объект для доступа к его переменным экземпляра (в C++ он также используется для вызова методов, тогда как в Objective- C используется синтаксис [instance methodName]). Свойства обычно предпочтительнее -> нотация в Objective-C. Это использование в вашем коде кажется ошибочным, rob mayoff сделал довольно хорошую работу по его исправлению.

  • 0
    будет ли пример из @crashmtr в его комментарии, я буду искать? извините, я честно не знаю, что вообще сделал символ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню