1

私はJSON形式に慣れていませんが、私が試みているものには理想的に見えます。カスタムNSObject(レシピ)を取得して、メールのURL文字列で送信する必要があります。次に、受信者は私のアプリでリンクを開き、URLが解析されます。

私の既存の実装は、レシピの詳細から手動で文字列を作成し、もう一方の端でそれをデコードします。JSONなどのより標準的なものを使用したいと思います。

Recipeこれまでのところ、クラスに次のメソッドを追加しました。

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

NSData次を使用して、このオブジェクトを正常にログに記録できます。

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

ただし、材料のリスト(an NSArray)をまだ追加できません。私は単にこれを使おうとしました:

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

しかし、ロギング時に、次のエラーが発生します。

Invalid type in JSON write (Ingredient)

お分かりのように、私はこれでかなり新しいです。

ingredients辞書に追加する前に、配列に何かをするつもりですか?

4

2 に答える 2

3

これを試して:

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

それがオブジェクトをself.orderedIngredients含む配列であり、プロパティが呼び出されていると仮定すると、ingredientsingredientsname

[self.orderedIngredients valueForKey:@"name"]

すべての名前の配列を返します。

于 2013-01-14T20:03:56.247 に答える
1

材料配列のリストにカスタムクラスオブジェクトが含まれている場合は、そのクラスのシリアライザーを作成する必要があります。

于 2013-01-14T19:55:24.340 に答える