2014-03-18 4 views
0

내 오류가 내 NSDictionary를 제대로 구현하지 못한다고 생각합니다. 아래는 내가 받고있는 오류 코드입니다.NSDictionary 및 JSON 직렬화 및 NSUserDefaults로 잘못 구현되는 부분은 무엇입니까?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary bytes]: unrecognized selector sent to instance 0x16eab400' 

오류는 다음과 같은 방법으로 발생합니다

- (void)check:(NSData *)json{ 
NSDictionary *json1 = [NSJSONSerialization 
        JSONObjectWithData:json 
         options:kNilOptions 
         error:nil]; 

NSUserDefaults *userdefaluts = [NSUserDefaults standardUserDefaults]; 
[userdefaluts setObject:[json1 objectForKey:@"Name"] forKey:@"name"]; 
[userdefaluts setObject:[json1 objectForKey:KEY_USER_ID] forKey:KEY_USER_ID]; 

NSLog(@"MainView - check - name: %@",[userdefaluts objectForKey:@"name"]); 
NSLog(@"MainView - check - name: %@",[userdefaluts objectForKey:KEY_USER_ID]); 
} 
+2

인수로 전달 된 'json'개체가 NSData 개체인지 확인하십시오. 그것은 사실 NSDictionary 수있는 것 같습니다. –

+0

메소드에 'error' 매개 변수가 있지만'nil'을 전달하고 문제가 무엇인지 추측하도록 요청하고 있습니다. 프레임 워크가 제공하는 도구를 사용하십시오. – Abizern

+0

감사합니다 @ RafałAugustyniak. 귀하의 의견은 저를 올바른 방향으로 인도했습니다. NSdata를 NSDictionary로 변경하면됩니다. – user3178926

답변

0

그래서 대답은 매우 쉬웠습니다. 내가해야만하는 것은 NSDictionary로 들어오는 데이터 유형을 변경하는 것이 었습니다. 올바른 코드는 다음과 같습니다.

1

귀하의 데이터는 아마 잘못하고 NSJSONSerializer 그것이 오류가있는 경우 표시하려면이 시도 구문 분석 할 수 없습니다 : NSError * jsonError가; NSDictionary * json1 = [NSJSONSerialization JSONObjectWithData : json 옵션 : kNilOptions 오류 : & jsonError]; if (jsonError) { NSLog (@ "json 데이터를 구문 분석 할 수 없습니다. 오류 : % @", jsonError.localizedDescription); }

1

가능성 : 코드가 백그라운드 스레드에서 실행될 수 있으며 NSUserDefaults가이를 좋아하지 않을 수 있습니다. json1의 objectForKey 호출 중 하나가 nil을 반환하고 일이 잘못됩니다. 두 개의 [json1 objectForKey : ...] 결과를 로컬 변수에 저장하고 NSLog에 저장합니다. 단계별로 디버거에서 코드를 단계별로 실행하십시오.

그리고 큰 가능성 : 당신이 전달하는 객체 "json"은 실제로 NSData가 아닙니다. 그것에 NSLog를하고 그것이 실제로 무엇인지 확인하십시오. 그것은 NSDictionary * 일 수도 있고 NSData *가 아닐 수도 있습니다. 이는 NSData (길이)에 사용 된 메소드가 NSDictionary로 전송되는 이유를 설명합니다. 메서드 호출을 확인하십시오. "id"유형의 객체를 전달하고 있습니까?

+0

당신의 큰 가능성은 실제로 답변이었습니다! 내 데이터는 NSDictionary! – user3178926