首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDictionary或NSKeyedArchiver

NSDictionary或NSKeyedArchiver
EN

Stack Overflow用户
提问于 2012-06-07 20:15:34
回答 1查看 616关注 0票数 0

在Model部分,我有一些数据类型,它们的属性都是属性列表数据类型。最终,用户将通过向服务器发送和从服务器读取来通过网络相互发送这些数据项。问题是,我应该使用NSCoding和NSKeyedArchiver (就像在下面的第二个代码块中一样,这使得XML很难看),或者我应该做一些像NSDict子类这样的事情,这样我就可以使用dictionaryWithContentsOfFile:writeToFile:atomically:来获得漂亮的XML?

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-07 20:38:01

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

另外,我真的会对NSDictionary的子类化保持警惕。这个类实际上代表了一个类簇,并在后台进行了一系列优化,以处理内存的最佳使用等。您可以阅读参考页面上的Subclassing Notes,以找到向字典添加功能的其他方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10931601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档