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 배열을 채우려 ... 짧은 방법이 ... 캔트 하드

+2

"C 기반"은 없습니다. –

+0

NSNumber 객체를 원한다면 컬렉션에 저장하고 파일/네트워크 스트림 등에 자동으로 인코딩/디코딩 할 수 있습니다. 다른 것들은 C 배열의 오래된 C int를 원할 수 있습니다. 및 용도 (예 : 오디오 처리 기능의 빈도 테이블). Objective-C에서는 가장 적합한 것을 선택할 수 있으며, 둘 모두를 지원합니다. – jhabbott

답변

10

그 나는 당신이있는 NSArray에 대한의 NSNumber를 사용해야 할 것 같아요. 당신은 내가 생각하는 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.... 

} 

편집 :

문제가 삼년 전에 요구되고있다.

NSNumber *n = @100; 

또는 루핑 특정 정수에 대한

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

THANKS MARIO ... – mogio

+0

prob ... 수락 하시겠습니까? – 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

먼저 시작 쉽게 NSNumbers 또는 NSArrays 같은 객체를 생성 할 수 있도록 설립 된 새로운 리터럴가 있었다 C 배열 :

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

둘째, 경우이 배열을 통해 NSArray 루프를 필요로 하나를 만들 : 당신이 그것을 많이하고 있다면

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