我将数据从一段JSON加载到一个对象中。我循环浏览了JSOn的NSDictionary,发现我正在编写一个令人讨厌的ifs阶梯,如下所示:
if ([item isEqualToString:@"SiteName"]) {
site.siteName = key[item];
}
if ([item isEqualToString:@"SiteUID"]) {
site.siteUID = key[item];
}
if ([item isEqualToString:@"Own"]) {
NSNumber *num = key[item];
site.isOwnSite = [num boolValue];
}
if ([item isEqualToString:@"CompetingOwnSiteId"]) {
site.competingOwnSiteId = key[item];
}
if ([item isEqualToString:@"LATY_NUM"]){
site.LATY_NUM = key[item];
}
if ([item isEqualToString:@"LONX_NUM"]) {
site.LONX_NUM = key[item];
}
这对我不起作用 - 它很丑陋和黑客 - 所以我估计我可以将属性名称和相应的NSString放入plist中,例如:
我可以将plist的内容抓取到另一个NSDictionary中,因此通过循环遍历两者,我可以在plist中使用正确的方法名称映射JSON中的内容。
但是......
我不知道如何获取属性名称以附加'到站点对象。 (对不起这个非常技术性的术语......)。例如,我想从plist获取NSString siteName ,并希望以某种方式生成等效的
site.*siteName* = key[@"SiteName"];
如果你能理解这种意识流,你能帮助我吗?
非常感谢! 安迪
答案 0 :(得分:1)
我建议使用JSONModel POD而不是plist
您可以找到here文档和示例。它提到Data models that take care of: Input Validation, Type Casting, Class Cascading & more. Automatically.
可能会在不久的将来节省你一些时间
正如Github页面上所提到的,here是关于"如何使用数据模型获取和解析JSON的分步教程"这可能是你感兴趣的。
如果您以前没有使用POD,here是一个非常直接的教程,可以设置它。
我将它用于我目前正在进行的项目中,我发现它很容易设置和使用。
答案 1 :(得分:1)
您正在寻找Key-Value Coding。我假设key
是包含属性名称键映射的plist。如果是这样,这就是您正在寻找的基本形式:
[site setValue: whatever forKey: key[@"SiteName"]];