2010-08-17 5 views
1

Objective-C에서 int 변수를 어떻게 디코딩하고 인코딩합니까?Objective-C에서 int 변수를 인 코드 및 디코드

이것은 내가 지금까지 해왔지만 그 시점에서 응용 프로그램이 종료되었습니다.

무엇이 실수입니까?

-(void)encodeWithCoder:(NSCoder*)coder 
{ 
    [coder encodeInt:count forKey:@"Count"]; 
} 

-(id)initWithCoder:(NSCoder*)decoder 
{ 
    [[decoder decodeIntForKey:@"Count"]copy]; 
    return self; 
} 
+1

디코딩 된 int를 변수에 할당하지 않는다는 것을 알고 있습니까? –

답변

8

[decoder decodeIntForKey:@"Count"]int 반환합니다. 그리고 그 메시지에 copy을 보내면 그 메시지는 int -> 충돌합니다.

Objective-C에서는 간단한 데이터 형식이 개체가 아닙니다. 그래서 당신은 그들에게 메시지를 보낼 수 없습니다. 인치는 간단한 c 데이터 유형입니다.

6

V1ru8이 맞습니다. 그러나 NSNumbers로 int를 인코딩하는 것을 선호합니다. 이와 같이 :

- (void)encodeWithCoder:(NSCoder *)coder { 
    [coder encodeObject:[NSNumber numberWithInt:self.count] forKey:@"Count"]; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super init]) { 
     self.count = [[decoder decodeObjectForKey:@"Count"] intValue]; 
    } 
    return self; 
} 
+0

좋은 지적! 나는 그것을 너무 좋아할 것이다. – V1ru8

관련 문제