для Objective-C и сохранить его очень просто. Я хочу понять одну вещь за раз ... Я создал очень простой класс, называемый студентом, все, что он делает, добавляет два числа, пытаясь понять, как вещи переходят в и обратно из методов) ** я переписал код == >> посмотреть на конце, чтобы увидеть версию, которая работает **Как отправить значения в Ivar в методе
Если у меня есть метод, который имеет
@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 *) х : (NSNumber *) y {
долгий срок;
sum = [x integerValue] + [y integerValue]; возвратная сумма; }
Основной
NSMutableArray * myIntegers1 = [NSMutableArray массива]; NSMutableArray * myIntegers2 = [NSMutableArray array];
for (NSInteger i= 0; i <40; i++) {
[myIntegers1 addObject:[NSNumber numberWithInteger:i]];
[myIntegers2 addObject:[NSNumber numberWithInteger:i]];
долго сумма = [студент addNumbers: [myIntegers1 objectAtIndex: я]: [myIntegers2 objectAtIndex: я]];
NSLog(@" The sum is %ld", sum);
}
Вы массив состоит из 'NSNumber * 's, которые являются указателями на объекты Objective-C. Это не удивительно: 'NSArray' может содержать только указатели на объекты, а не примитивы. Hance, 'objectAtIndex:' возвращает общий указатель объекта ('id'). 'int' является примитивным, встроенным C-типом. Это не указатель. Таким образом, вы не можете присвоить возвращаемое значение 'objectAtIndex:' для свойства, потому что один из них является «id» (например, указателем на объект Objective-C), а другой - «int». Однако вы могли бы попытаться преобразовать объект 'NSNumber' в' int'. Прочтите документацию, чтобы узнать, как это сделать. –