2011-06-30 35 views
0
存儲的NSNumber

我在model.h以下聲明:中的NSMutableArray

@interface Model: NSObject { 
NSMutableArray *myMutableArray; 
.... 
} 
@property (nonatomic) double myDouble; 

在model.m相應的@synthesize:

@synthesize myDouble; 

然後我有以下二傳控:

-(void) setMyDouble: (double) newDouble{ 
myDouble = newDouble; 
[myMutableArray addObject:[NSNumber numberWithDouble:myDouble]]; 
} 

在數組賦​​值後放置一個斷點,調試器爲myMutableArray顯示以下內容:

myMutableArray =(_NSArrayM *)0x631c450 1對象

0 =(NSCFNumber *)0x631c6a0

所以,我的雙似乎並沒有正確地進入數組。我有後續分配給這個數組的NSStrings,在調試器中顯示正常。 myDouble和newDouble的值都很好(通常只是一個整數)。

我讀過幾個關於將雙精度賦值給NSMutableArrays的線程,還沒有發現任何不尋常的東西。任何指導將不勝感激。

更新

看來,代碼是正確的,但我不明白的是,調試器顯示的NSNumber的地址,而不是它的價值。感謝大家回覆,非常感謝! :)

+1

如果我忽略了某些內容,請糾正我,但您的調試器輸出顯示數組中存在* NSNumber。那麼問題是什麼? – DarkDust

+0

對不起,我應該更清楚。在典型的調試場景中,myDouble將是一個整數,例如數字9.調試器顯示myDouble爲9,但顯示如上所示的myMutableArray條目。 –

+0

不要錯誤地將NSNumber對象的地址作爲其值。 – Eiko

回答

7

看來你很迷茫00 = (NSCFNumber *) 0x631c6a0。 0表示數組中的NSNumber的索引。如果您從數組中檢索對象並將其打印到NSLog中,它會顯示正確的值。在你的代碼中沒有什麼是錯的。

+0

@EmptyStack - 感謝您的回覆。我知道該數組的第一個索引是0.我的期望是調試器將顯示數組與myDouble的值相同的值,當我測試時通常是一個單位數的整數,通常是9個。 –

+1

@Michael你對調試器的期望太高了。你是否也許是以前的Visual Studio用戶? :) – ageektrapped

+0

@ageektrapped - 這將是一個啓示! :)所以我應該如何從調試器解釋此條目:myMutableArray =(_NSArrayM *)0x631c450 1個對象 0 =(NSCFNumber *)0x631c6a0 –

1

你忘了分配你的可變數組。調試你的應用程序,看看數組是否被分配。

編輯

更改函數名稱到別的東西,看到了魔術。

+0

哎呀,應該提到,我已經覆蓋了init方法: - (id)init {myMutableArray = [[NSMutableArray alloc] init]; 迴歸自我; } –

+0

@Michael Mangold查看最新的答案。 –