0

モデル部分には、プロパティがすべてプロパティ リスト データ型であるデータ型がいくつかあります。最終的に、ユーザーはサーバーへの投稿とサーバーからの読み取りによって、これらのデータ項目をネットワーク経由で相互に送信します。問題は、NSCoding と NSKeyedArchiver を使用する必要があるか (以下の 2 番目のコード ブロックのように、見苦しい XML IMHO になります)、またはサブクラス 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(ここを参照) を調べて、単純で簡単な変換を行うことができます (すべての ivar を辞書にまとめて に渡し+dataWithJSONObject:options:error、ネットワーク経由でデータを送信し、+JSONObjectWithData:options:error)。それ以外の場合は、サードパーティやオープン ソースのソリューションがたくさんあります。SBJSONがすぐに思い浮かびます。

PS私は本当にサブクラス化に用心していNSDictionaryます。このクラスは実際にはクラス クラスタを表し、メモリの最適な使用などを処理するためにバックグラウンドで行われる一連の最適化があります。リファレンス ページのサブクラス化に関する注意事項を読んで、辞書に機能を追加する他の方法を見つけることができます。

于 2012-06-07T12:38:00.503 に答える