Как отправить значения в Ивар в методе

Новичок в Objective-C и простота очень и очень проста. Я пытаюсь понять одну вещь за раз... Я создал очень простой класс под названием student, все, что он делает, это добавляет два числа, пытаясь понять, как все проходит и обратно из методов) ** я переписал код ==>> посмотрите на конец, чтобы увидеть версию, которая работает **

Если у меня есть метод, который имеет

@property (nonatomic) int firstNum; 
@property (nonatomic) int secondNum;

и у меня есть экземпляр моего класса под названием студент, я присваиваю значение firstNum лайк student.firstNum = 100; student.secondNum = 77; это легко, и метод добавляет их и отправляет сумму в return

Но в основном я пытался назначить его из массива, и он не работал, я пытался

student.firstNum = [myIntegers objectAtIndex:0];

а также

student.firstNum = [myIntegers objectAtIndex:i]; //using a for loop with i index 

говорит несовместимый указатель на целочисленное преобразование

Вот фрагмент из основного, который я пробовал, он не завершен, он просто пытается установить firstNum в конце концов я тоже настрою secondNum и отправить каждую пару в метод, чтобы сложить вместе, но сейчас я застрял, пытаясь получить firstNum присвоить значение в myIntegers[i] начать

NSMutableArray *myIntegers = [NSMutableArray array];

for (NSInteger i= 0; i <= 10; i++) {

    [myIntegers addObject:[NSNumber numberWithInteger:i]]; // this works up to here 

    student.firstNum = [myIntegers objectAtIndex:i]; // this does not work

} 

Я тоже пробовал [i],

Вот мой метод:

- (int)addNumbers {

    int sum = self.firstNum + self.secondNum;
    return sum;
}

ЗДЕСЬ ЧТО РАБОТАЕТ: при условии, что у меня есть объект студента

.m

  • (длинный)addNumbers:(NSNumber *)x:(NSNumber *)y {

    длинная сумма;

    sum = [x integerValue] + [y integerValue]; возврат суммы; }

главный

NSMutableArray *myIntegers1 = [NSMutableArray array]; NSMutableArray *myIntegers2 = [массив NSMutableArray];

    for (NSInteger  i= 0; i <40; i++) {

        [myIntegers1 addObject:[NSNumber numberWithInteger:i]];
        [myIntegers2 addObject:[NSNumber numberWithInteger:i]];

длинная сумма = [имя студента addNumbers:[myIntegers1 objectAtIndex:i]:[myIntegers2 objectAtIndex:i]];

        NSLog(@" The sum is %ld", sum);
}

1 ответ

Вы создаете свойства типа int, но в вашем for цикл, вы пытаетесь назначить им NSNumber,

NSNumber простой контейнер для элемента данных переменного тока и может содержать int, float, char, bool, так далее.

Измените ваш цикл так:

for (NSInteger  i= 0; i <= 10; i++) {

    [myIntegers addObject:[NSNumber numberWithInteger:i]];

    student.firstNum = [[myIntegers objectAtIndex:i] intValue]; // this 'extracts' the int value from the NSNumber

} 
Другие вопросы по тегам