我是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];
但是,我还不能添加成分列表(
NSArray
)。我试图简单地使用这个:NSDictionary *dictionary = @{ @"name" : self.name,
@"instructions" : self.instructions,
@"ingredients" : self.orderedIngredients };
但是在记录时,我收到此错误:
Invalid type in JSON write (Ingredient)
如您所知,我对此很陌生。
我是否打算在将
ingredients
数组添加到字典之前对其进行处理? 最佳答案
尝试这个:
NSDictionary *dictionary = @{ @"name" : self.name,
@"instructions" : self.instructions,
@"ingredients" : [self.orderedIngredients valueForKey:@"name"] };
假设
self.orderedIngredients
是其中包含ingredients
对象的数组,并且ingredients
具有一个名为name
的属性,[self.orderedIngredients valueForKey:@"name"]
将返回所有名称的数组。