2011-07-22 77 views
0
singelton.categoryId = (int)[categories.categoriesId objectAtIndex:indexPath.row]; 
NSLog(@"%d", singelton.categoryId); 

singelton.categoryId來自類型int
但是,當我嘗試打印它的號碼是隨機的,但如果我這樣做NSLog(@"%@", singelton.categoryId);打印值是正確的。
我需要用%d進行打印。目標C中int的問題

有人可以幫助我嗎?

回答

4

使用intValue獲取整數表示的方法NSString/NSNumber。嘗試,

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

嘗試以下操作:

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

他寫道,'singleton.categoryID'是'int' 。 – zoul

1

嘗試都以這種方式做到這一點:

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

這是因爲你不能存儲在陣列整型 - 他們必須NSNumbers

1

objectAtIndex:返回的類別ID是一個對象,最有可能是NSNumber。通過將其轉換爲int,您可以獲取對象的地址,而不是存儲在其中的數值。正確的代碼是這樣的:

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

我假設數組返回給你一個NSNumber。所以試試看。

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

你真棒。沒有人「得到」這個問題。 –

1

有沒有辦法,這是一個從一int原始類型來時,這是一個正確的對象(假設objectAtIndex在Objective-C與其他地方一樣這裏表現 - 也就是說,它不是你自己的方法,所以你需要。以索要intValue:?

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

如果它是一個可行的方法是什麼類categoriesID