2012-06-24 6 views
5

私が使っている数値よりも多い数値で配列を塗りつぶす方法はありますか? 配列で数値を入力するだけで、ループ内での計算に使用できるようにするには、どれくらい苦労しますか?これは、PHP、As3、Javaなどの他のCベース言語では簡単です。目的C - 数値を使った配列

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); 
} 

うまくいけば、短い方法がある...私はint型で配列を埋めるためにしたい...私はあなたがNSArrayのためのNSNumberを使用する必要が推測しにくい

+2

「Cベース」の言語はありません。 –

+0

'NSNumber'オブジェクトを必要とするものについては、それらをコレクションに格納し、ファイル/ネットワークストリームなどに自動的にエンコード/デコードすることができます。その他のものについては、C配列の古い古いC intを超高速検索(例えば、音声処理機能における周波数テーブル)を含む。 Objective-Cでは、どちらが最も適切かを選択することができ、両方をサポートします。 – jhabbott

答えて

10

ということカント。あなたは私が推測するint型を使用したい場合は、C言語の配列を使用する必要があると思います:

NSInteger myArray[20]; 

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

    //do something 
} 

のNSNumberはしかし、私は、この言語のためのより良い方法を推測です。 少なくとも、あなたは、コードを少し短くし、高速列挙を行うことができます。

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

//do something.... 

} 

EDIT:

質問は3年前に頼まれました。それが簡単にNSNumbersまたはNSArraysのようなオブジェクトを作成するために行うために設立され、新たなリテラルがありました:特定の整数をループするための

NSNumber *n = @100; 

または

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

THANKS MARIO ... – mogio

+0

問題はありません。受け入れることは自由です:) – Mario

+0

説明されているリテラル構文はすでに利用可能です:http://clang.llvm.org/docs/ObjectiveCLiterals.html –

0

ニース短い代替:

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

おもしろい方法...ありがとうアン! – mogio

0

まずスタートC配列を有する:

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

第二に、場合は、このアレイを介しNSArrayループを必要とし、1を作成します。あなたはそれをたくさんやっている場合

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

あなたはNSArray上のカテゴリとしてコードまでの第二の部分をラップすることができます。

0

が遅すぎます。でも、次のこともできる。

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

この構文はすでに受け入れられている回答でカバーされているようです。どのような価値がありますか? – Krease

関連する問題