Objective C中的int问题

时间:2011-07-22 08:25:25

标签: iphone objective-c ios singleton nsinteger

singelton.categoryId = (int)[categories.categoriesId objectAtIndex:indexPath.row];
NSLog(@"%d", singelton.categoryId);

singelton.categoryId来自int类型 但是当我尝试打印时,数字是随机的,但是如果我这样做NSLog(@"%@", singelton.categoryId);,则打印值是正确的 我需要用%d打印它。

有人可以帮助我吗?

6 个答案:

答案 0 :(得分:4)

使用 intValue 方法获取 NSString / NSNumber 的整数表示形式。尝试,

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

答案 1 :(得分:2)

我假设数组返回一个NSNumber。试试这个。

int catId = [ ((NSNumber*) [categories.categoriesId objectAtIndex:indexPath.row] ) intValue];
NSLog(@"%d, catId )

答案 2 :(得分:1)

尝试以下方法:

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

答案 3 :(得分:1)

尝试以这种方式执行此操作:

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

这是因为你不能在数组中存储整数 - 它们必须是NSNumbers

答案 4 :(得分:1)

objectAtIndex:返回的类别ID是一个对象,很可能是NSNumber。通过将其转换为int,您将获得对象的地址,而不是存储在其中的数值。正确的代码是这样的:

singleton.categoryID = [[… objectAtIndex:…] intValue];

答案 5 :(得分:1)

当它是一个正确的对象时(假设int在这里与Objective-C中的其他地方一样行为 - 也就是说,它不是你自己的方法),所以它不可能来自objectAtIndex原始类型。所以,你需要要求intValue

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

如果是可用的方法。什么课程是categoriesID