2009-01-29 8 views
28

Objective-C ve iPhone geliştirme konusunda yeniyim ve bir NSMutableArray'da kayan nokta değerleri depolamaya çalışıyorum, ancak ne zaman "uyumsuz" diyerek hata alıyorum 'addObject' argüman 1 için yazın. Neyi yanlış yapıyorum? Matematik hesaplamaları yapabileceğim bir çiftler dizisi oluşturmaya çalışıyorum.Kayan nokta değerlerinin NSMutableArray'i nasıl oluşturulur

[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"]; 
/* or */ 
[myDictionary setObject:@0.2f forKey:@"theFloat"]; 

floatValue göndererek geri almak: Sözlük bir nesne gerektiğinden

cevap

59

NSMutableArray yalnızca nesneleri tutar, bu nedenle NSNumber nesnelerle yüklenecek bir dizi olmasını istiyorsunuz. Çiftinizi tutmak için her NSNumber'i oluşturup dizinize ekleyin. Belki de böyle bir şey. Gerektiği kadar yineleyin.

Gerektiği kadar tekrarlayın.

+0

Kullanım numberWithFloat hassasiyet önemlidir yoksa. –

12

kullanın bir NSNumber, senin şamandıra sarmak için

float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue]; 

Kod denenmemiştir.

Diğer birçok veri tipini de NSNumber içinde paketleyebilirsiniz, documentation'u kontrol edin. NSPoint ve NSRect gibi bazı yapılar için NSValue da var.

7

Kakao'da, NSMutableDictionary (ve tüm koleksiyonlar, gerçekten) nesneleri değer olarak gerektirir, böylece başka bir veri türünü kolayca geçiremezsiniz. Hem sjmulder hem de Ryan'ın önerdiği gibi, skaler değerlerinizi diğer nesneler için NSNumber (sayı için) ve NSValue örneklerinde sarabilirsiniz.

Ondalık bir sayıyı temsil ediyorsanız, fiyat gibi bir şey için, NSDecimalNumber'u da inceleyerek kullanmanızı öneririz. Daha sonra, kayan noktadaki yanlışlık sorunlarından kaçınabilirsiniz ve genellikle "değeri", bir ilkel kodla temsil etmek yerine NSDecimalNumber olarak kullanabilir ve saklayabilirsiniz. Örneğin

:

// somewhere 
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain]; 
NSMutableArray* prices= [[NSMutableArray array] retain]; 

// ... 

[prices addObject:price]; 
1
NSMutableArray *muArray = [[NSMutableArray alloc] init]; 
NSNumber *float = [NSNumber numberWithFloat:210.0f]; 
NSNumber *float1 = [NSNumber numberWithFloat:211.0f]; 
[muArray addObject:float]; 
[muArray addObject:float1]; 

NSlog(@"my array is--%@",muArray); 
+0

Lütfen cevabınızı açıklayın – Gwenc37