在Model部分,我有一些数据类型,它们的属性都是属性列表数据类型。最终,用户将通过向服务器发送和从服务器读取来通过网络相互发送这些数据项。问题是,我应该使用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发布于 2012-06-07 20:38:01
在我看来,这两种选择都不是通过网络发送数据的好做法,因为与其他格式相比,文件大小相对较大。相反,我可能会使用JSON库来传输这种结构化数据。如果你是为iOS 5+构建的,你可以查看NSJSONSerialization (reference here)来做一些简单、直接的转换(只需把你所有的ivar打包到一个字典中并传递给+dataWithJSONObject:options:error,通过网络发送数据,然后用+JSONObjectWithData:options:error解包)。否则,有一堆第三方和/或开源解决方案。SBJSON立即浮现在我的脑海中。
另外,我真的会对NSDictionary的子类化保持警惕。这个类实际上代表了一个类簇,并在后台进行了一系列优化,以处理内存的最佳使用等。您可以阅读参考页面上的Subclassing Notes,以找到向字典添加功能的其他方法。
https://stackoverflow.com/questions/10931601
复制相似问题