2013-03-12 4 views
0

배열에 정수를 채우려고합니다. 그러나 생각보다 쉽지 않은 이상한 것이 있습니다. 다음은 어떻게되는지에 대한 설명입니다.'NSArray *'에 'int'의 암시 적 변환이 ARC로 허용되지 않습니다.

코드의 마지막 줄에 오류가 발생합니다. .H 파일에서

:

//.h file 
{ 
NSArray storeDisk[15]; 
} 
property int virdCount; 
property (nonatomic, strong)NSArray *storeDisk; 

//.m file 

virdCount+=virdCount; 
storeDisk[0]=virdCount; 
+1

NSArray를 만들지 않았습니다. NSArray 포인터 배열을 만들었습니다. 그리고 @ 101을 저장하는 것은 정수를 저장하는 것이 아니라, 문자열을 저장하는 것입니다. –

+1

@ s1m0n 이는 변경 불가능한 배열을 반환합니다. –

+0

업데이트 된 질문을 참조하십시오. – casillas

답변

1

당신은 아래의 방법으로 배열을 생성해야한다 "INT의 암시 적 변환은 허용되지 NSArray를합니다"

{ 
    NSMutableArray *storeDisk; 
} 
property int virdCount; 
property (nonatomic, strong)NSMutableArray *storeDisk; 

NSMutableArray *storeDisk = [[NSMutableArray alloc] init]; 
[storeDisk addObject:virdLabel.text]; 
+0

업데이트 된 질문보기 – casillas

+0

답변을 업데이트했습니다. – Apurv

6

당신이로 정수를 넣어하려는 경우 NSArray이면 NSNumber을 사용해야합니다. 예를 들어

:

NSArray *a = [NSArray arrayWithObject:[NSNumber numberWithInt:virdCount]]; 

또는 짧은 손이 :

int value = [[a objectAtIndex:0] intValue]; 
1

그것은처럼 보인다 :

NSArray *a = @[@(virdCount)]; 

어쨌든, 다시 밖으로 데이터를 얻을 수 있습니다 당신은 NSArrays를 이해하는 근본적인 실수를 가지고 있습니다. 핵심 코코아 클래스의 구문과 사용법을 배우기 위해 일부 iOS 자습서를 읽는 것이 좋습니다.

다음 줄 :

NSArray storeDisk[10]; 

하지합니까 (10 개) 세포와 함께있는 NSArray를 생산하고 있습니다.

어느 것이 작품의 편집되지 않은 질문 있다는 :

NSArray* storeDisk[15]; 

단순히 15 NSArray를 포인터의 배열을 생성합니다. 15 개의 NSArray 배열을 만들려고 한 경우에만 유용합니다 (여전히 Objective-C에서 더 나은 방법이 될 것입니다).

NSArray에 대해 읽고 올바른 구문을 사용하여 사용해야합니다. 이외의 NSArray는 불변이므로 올바른 선택이 아닙니다. 배열에 객체를 추가하려면 변경 가능한 배열을 사용해야합니다. 둘째, 정수를 삽입하려면 숫자 (NSNumber)에 코코아 래퍼를 사용해야합니다. NSArray는 객체 만 저장할 수 있습니다. 20 개 세포와 함께있는 NSArray를 생산하기 위해

는, 하나의 가능성이 코드를 사용 : 아직도

NSMutableArray* array = [NSMutableArray arrayWithCapacity:20]; 
[array insertObject:[NSNumber numberWithInt:virdCount] atIndex:10]; 

을, 나는 보기 엔 당신이 잠시 멈추고 sometutorials 또는 documentation을 읽을을 제안한다.

편집 된 질문을 반영하도록 편집되었습니다.

0

int를 그대로 배열에 추가 할 수 없습니다. 배열은 객체 만 받아 들일 수 있으므로 (id) 또는 기타 목적 객체를 사용하여 만들 수 있습니다. NSArray에 int를 추가하려면 다음을 사용하십시오.

[arrayObj addObject:[NSNumber numberWithInteger:0]]; 
[arrayObj addObject:[NSNumber numberWithInteger:1]]; 
+0

또는 [arrayObj addObject : @ (0)]; – Zammbi

관련 문제