2013-01-14 3 views
1

저는 JSON 형식을 처음 사용 합니다만, 시도하고있는 것에 이상적입니다. 맞춤형 NSObject (요리법)을 받아 이메일의 URL 문자열을 통해 보내야합니다. 그러면 수신자가 내 앱에서 링크를 열고 URL이 구문 분석됩니다.개체를 JSON으로 serialize

내 구현은 수작업 세부 정보에서 수동으로 문자열을 작성하고 반대쪽 끝에서 디코딩합니다. 나는 JSON과 같은 좀 더 표준적인 것을 선호한다. 나는 아직 내 목록을 추가 할 수 없습니다, 그러나

[[NSString alloc]initWithData:recipe.jsonRepresentation 
         encoding:NSUTF8StringEncoding]; 

:

- (NSData *)jsonRepresentation 
{ 
    NSDictionary *dictionary = @{@"name":self.name, 
         @"instructions":self.instructions}; 
    NSError* error; 
    return [NSJSONSerialization dataWithJSONObject:dictionary 
              options:NSJSONWritingPrettyPrinted 
              error:&error]; 
} 

내가 성공적으로 사용하여이 NSData 객체를 기록 할 수 있습니다 :

지금까지 내 Recipe 클래스에 다음과 같은 방법을 추가 한 의 성분 (NSArray).

NSDictionary *dictionary = @{ @"name" : self.name, 
         @"instructions" : self.instructions, 
         @"ingredients" : self.orderedIngredients }; 

하지만 로깅에

, 나는이 오류가 : 당신이 말할 수

Invalid type in JSON write (Ingredient) 

, 나는이 꽤 새로운 해요 단순히 이것을 사용하려고했습니다.

사전에 추가하기 전에 배열을 ingredients 배열로 변경하려고 했습니까?

+0

참고 : 제 3 자 프레임 워크를 사용하지 않고 현재 수행하고있는 것을 알기 전까지는 현재 사용하지 않는 것이 좋습니다. –

+1

성분 대상이란 무엇입니까? 현재 사전에 추가하기 전에 NSDictionary를 반환하는 메소드를 해당 클래스에 작성해야합니다. – iDev

+1

성분은 몇 가지 속성을 가진 사용자 지정 개체입니다. 내가 여기서 신경 쓰는 유일한 사람은 그 이름이다. –

답변

3

이 시도 .

+1

고맙습니다. 매우 간결합니다. 나는 XCode가 그것을보기 좋게 만들었 으면 좋겠다. –

1

성분 표 배열에 사용자 정의 클래스 객체가있는 경우 해당 클래스에 대한 직렬기를 생성해야합니다.

[self.orderedIngredients valueForKey:@"name"] 

모든 이름의 배열을 반환합니다 self.orderedIngredients 그것에 ingredients 객체와 배열이라고 가정

NSDictionary *dictionary = @{ @"name" : self.name, 
         @"instructions" : self.instructions, 
         @"ingredients" : [self.orderedIngredients valueForKey:@"name"] }; 

ingredients 그것에 name라는 속성이 있습니다

+0

알았어 - 내가 어떻게 할지는 분명하지 않지만 구별이있다. 대신 재료 이름의 배열을 사용할 수 있습니까? –

+0

@ user1111278, +1 'ingredients'의 모든 속성을 JSON으로 변환해야한다면'serializer' 부분에 동의합니다. – iDev

관련 문제