用于 JSON 解析的 NSDictionary 或自定义 NSObject
Posted
技术标签:
【中文标题】用于 JSON 解析的 NSDictionary 或自定义 NSObject【英文标题】:NSDictionary or custom NSObject for JSON parsing 【发布时间】:2012-09-05 20:54:55 【问题描述】:我看到很多人使用NSDictionary
进行 JSON 解析:
//ViewController.m
NSString* forename = [jsonDict valueForKey:@"forename"];
NSString* surname = [jsonDict valueForKey:@"surname"];
但我也有人从 NSDictionary
创建自定义 NSObject
s。
//JSONObject.h
@interface JSONObject : NSObject
@property (nonatomic) NSString* forename;
@property (nonatomic) NSString* surname;
@end
//JSONObject.m
@implementation JSONObect
@synthesize forename = _forename;
@synthesize surname = _surname;
@end
//ViewController.m
JSONObject* jsonObject = [[JSONObject alloc] init];
[jsonObject setForename:[jsonDict valueForKey:@"forename"]];
[jsonObject setSurname:[jsonDict valueForKey:@"surname"]];
然后将这些存储在NSMutableArray
:
NSMutableArray* jsonObjectsArray = [NSMutableArray arrayWithCapacity:20];
[jsonObjectsArray addObject:jsonObject];
如果需要,以后可以访问。
就我而言,我有一个 UITableView
从 JSON 获取数据。数据至少使用一次,但很可能会使用更多(例如,在设备轮换中)。 JSON 数据不应永久存储到文件中,因为它会定期更新并在每次应用启动时下载。
我应该在我的场景中使用自定义NSObject
还是NSDictionary
?
【问题讨论】:
我让这个问题听起来更像是一个讨论问题而不是问答,希望我的编辑让它变得更好。 【参考方案1】:使用自定义对象的一个理由是,它距离使用 NSManagedObject 仅几步之遥,它可以让您利用 Core Data 来管理您的对象图。
【讨论】:
自定义对象在存储方面也可以说更紧凑。【参考方案2】:使用 NSDictionary 的理由是它更简单、更易于理解,并且您定义的“次要”类(和相关的 h/m 文件)更少,因此在项目中管理的更少。在“不断变化”的项目中编辑/扩展也容易得多。
【讨论】:
以上是关于用于 JSON 解析的 NSDictionary 或自定义 NSObject的主要内容,如果未能解决你的问题,请参考以下文章
使用 AFNetworking 将 JSON 解析为 NSDictionary
NSDictionary - 从返回的 JSON 服务中解析项目