Как отправить значения в Ивар в методе
Новичок в 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
}