0

在模型部分,我有一些数据类型,其属性都是属性列表数据类型。最终,用户将通过网络向服务器发送和读取这些数据项。问题是,我应该使用 NSCoding 和 NSKeyedArchiver (如下面的第二个代码块,这使得 XML 恕我直言丑陋)还是我应该做一些类似于子类 NSDict 的事情,以便我可以使用dictionaryWithContentsOfFile:writeToFile:atomically:获得漂亮的 XML?

@interface Word : NSObject <NSCoding>
@property (strong, nonatomic) NSString *language;
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSDictionary *detail;
@property (strong, nonatomic) NSString *userName;
@property (strong, nonatomic) NSString *userId;
@property (strong, nonatomic) NSArray *files;
- (void)copyFromTemporaryFiles:(NSArray *)temporaryFiles; // populates self.files
@end

@interface Category : NSObject <NSCoding>
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSDictionary *detail;
@property (strong, nonatomic) NSDate *updated;
@property (strong, nonatomic) NSArray *words;
+ (Category *)categoryWithName:(NSString *)name;
- (void)saveWithName:(NSString *)name;
@end
4

1 回答 1

2

在我看来,这些选项都不是通过网络发送数据的好习惯,因为与其他格式相比,文件大小相对较大。相反,我可能会使用 JSON 库来传输这种结构化数据。如果您正在为 iOS 5+ 构建,您可以查看NSJSONSerialization参考此处)进行一些简单、直接的转换(只需将所有 ivars 打包到字典中并将其传递给+dataWithJSONObject:options:error,通过网络发送数据,然后使用+JSONObjectWithData:options:error)。否则,会有一堆第 3 方和/或开源解决方案。SBJSON立即浮现在脑海中。

PS我真的会警惕子类化NSDictionary。该类实际上代表一个类集群,并且在后台进行了一系列优化以处理内存的最佳使用等。您可以阅读参考页面上的子类化注释以找到一些其他方法来为您的字典添加功能。

于 2012-06-07T12:38:00.503 回答