2012-06-24 25 views
5

Bir diziyi kullandığım sayıdan daha iyi bir şekilde doldurmanın daha iyi bir yolu var mı? Sadece bir dizi ile bir dizi doldurmak için yazmak için ne kadar çok çılgın bir döngü içinde bir hesaplama için kullanılabilir böylece. Bu, PHP, As3 veya Java gibi diğer C dillerinde daha kolaydır.Amaç C - Sayılarla Array

NSArray *myArray = [NSArray arrayWithObjects: 
        [NSNumber numberWithInt:1000],[NSNumber numberWithInt:237], [NSNumber numberWithInt:2673], nil]; 

int total = 0; 
for(int i = 0; i < [myArray count]; i += 1){ 
    total += [[myArray objectAtIndex: i]intValue]; 
    NSLog(@"%i", total); 
} 

Umarım sadece ints içeren bir dizi doldurmak istiyor ... daha kısa bir yolu vardır ... olamaz sert

+2

Bu dillerden hiçbiri "C tabanlı" dır. –

+0

"NSNumber" nesnesini istediğiniz bazı şeyler için, koleksiyonlarda saklanabilir ve otomatik olarak kodlanmış/şifrelenmiş/şifrelenmiş dosyalar/ağ akışları vb. Için. Diğer şeyler için, bir C dizisindeki eski C int'lerini isteyebilirsiniz, süper hızlı arama için ve kullanım (örneğin bir ses işleme fonksiyonundaki bir frekans tablosu). Objective-C'de hangisinin en uygun olduğunu seçebilirsiniz, her ikisini de destekler. MARIO ... – jhabbott

cevap

10

o sana bir NSArray için NSNumber kullanmak zorunda sanırım. sanırım int'leri kullanmak istiyorsanız bir c dizi kullanmak zorunda:

NSInteger myArray[20]; 

for (int i=0;i<20;i++) { 
    int num=myArray[i]; 

    //do something 
} 

NSNumber olsa bu dil için daha iyi bir yaklaşım tahmin olduğunu. En azından kodu biraz kısaltmak için hızlı numaralandırma yapabilirsiniz:

for (NSNumber *n in myArray) { 
int num = [n intValue]; 

//do something.... 

} 

DÜZENLEME:

soru 3 yıl önce istendi.

NSNumber *n = @100; 

veya döngü belirli tamsayılar için

NSArray *array = @[@100,@50,@10]; 
+0

TEŞEKKÜRLER kabul etmek :) – mogio

+0

değil prob ... çekinmeyin – Mario

+0

açıklanan literal sözdizimi zaten mevcuttur: http://clang.llvm.org/docs/ObjectiveCLiterals.html –

0

Güzel kısa alternatif:

NSArray *numbers = [@"1000,237,2673" componentsSeparatedByString:@","]; 
for (NSString *i in numbers) { 
    [i intValue]; // Do something. 
} 
+0

ilginç bir şekilde ... teşekkürler Anne! – mogio

0

İlk başlangıç ​​daha kolay NSNumbers veya NSArrays gibi nesneleri oluşturmak için yapmak amacıyla kurulan yeni değişmezleri olmuştur

NSInteger myCArray = { 1000, 237, 2673 }; 
// calculate number of elements 
NSUInteger myCArrayLength = sizeof(myCArray)/sizeof(NSInteger; 
: C dizisi ile

İkincisi, eğer bu dizinin üzerinden bir NSArray döngü ihtiyaç ve bir tane oluşturun: Eğer onu çok yapıyorsan

NSMutableArray *myNSArray = [NSMutableArray arrayWithCapacity:myCArrayLength]; 
for(NSUInteger ix = 0; ix < myCArrayLength; ix++) 
    [myNSArray addObject:[NSNumber numberWithInteger:myCArray[ix]]; 

Sen NSArray bir kategori olarak kod kadar ikinci parça kaydırılabilir. Çok geç olduğu için

0

. ama sen de aynısını yapabilirsin.

int total = 0; 
nsarray *myArray = @[@1.8,@100,@299.8]; 
for(nsnumber *num in myArray){ 
total+=num; 
} 
+0

Bu sözdizimi, kabul edilen yanıtta zaten kapsanmış gibi görünüyor - hangi değerin yeniden değeri var? – Krease