Проблема с int в Objective C - PullRequest
0 голосов
/ 22 июля 2011
singelton.categoryId = (int)[categories.categoriesId objectAtIndex:indexPath.row];
NSLog(@"%d", singelton.categoryId);

singelton.categoryId относится к типу int.
Но когда я пытаюсь напечатать это число случайное, но если я делаю это NSLog(@"%@", singelton.categoryId);, печатное значение будет правильным. Мне нужно напечатать его с %d.

Может ли кто-нибудь мне помочь?

Ответы [ 6 ]

4 голосов
/ 22 июля 2011

Используйте метод intValue , чтобы получить целочисленное представление NSString / NSNumber . Попробуйте,

singelton.categoryId = [[categories.categoriesId objectAtIndex:indexPath.row] intValue];
2 голосов
/ 22 июля 2011

Я предполагаю, что массив возвращает вам NSNumber.Так что попробуйте.

int catId = [ ((NSNumber*) [categories.categoriesId objectAtIndex:indexPath.row] ) intValue];
NSLog(@"%d, catId )
1 голос
/ 22 июля 2011

Нет способа, который исходит от примитивного типа int, когда это правильный объект (при условии, что objectAtIndex ведет себя здесь, как и везде в Objective-C - то есть это не ваш собственный метод. Итак, вам понадобитсязапросить intValue:

[[categories.categoriesId objectAtIndex:indexPath.row] intValue]

, если это доступный метод. Какой класс categoriesID?

1 голос
/ 22 июля 2011

Идентификатор категории, возвращаемый objectAtIndex:, является объектом, наиболее вероятно, NSNumber. Приведя его к int, вы получите адрес объекта, а не числовое значение, хранящееся в нем. Правильный код будет примерно таким:

singleton.categoryID = [[… objectAtIndex:…] intValue];
1 голос
/ 22 июля 2011

Попробуйте сделать это следующим образом:

singelton.categoryId = [[categories.categoriesId objectAtIndex:indexPath.row] intValue]

Это потому, что вы не можете хранить целые числа в массиве - они должны быть NSNumbers.

1 голос
/ 22 июля 2011

попробуйте следующее:

NSLog(@"%d", [singelton.categoryId intValue]);
...