iphone - 設定 - settings.bundle swift




iPhone Apps用のXmlシリアル化ライブラリ (4)

あなたが何を記述しているかは、 ObjectiveResourceの 実装の中に埋もれていて、JSONとXMLの両方をサポートしています。 それはかなり簡単にそれをフォークし、すべての接続管理を捨てて、それを解析するだけにスリムにする必要があります。

Appleはオブジェクト直列化/非直列化のためにNSArchiverとNSUnachriverを提供していますが、これはカスタムxmlスキーマを処理できません。 したがって、任意のカスタムxmlスキーマのデータでオブジェクト構造を塗りつぶすことは、手動で行う必要があります。 iPhone開発者コミュニティが急速に成長しているので、初心者プログラマーの多くは、利用可能なXML解析の可能性に対処することに絶望的です。

iPhone SDKは、xml解析のためのNSXmlParserのみを提供します。これは、XML構造体全体を満たすよりもXMLファイルの特定の部分を読み込む方が便利です。

もう1つの可能性は有名なlibxmlライブラリです。これはANSI Cで書かれています - objective-cでプログラミングを始めて、以前は適切なCを学んだことがない人にとっては使いやすいことではありません。 イベントには利用可能なラッパーがたくさんあり、xmlを扱うことは初心者のための痛みになる可能性があります。

ここで私の考えが起こります。 オブジェクト構造を自動的に塗りつぶすXmlSerializerライブラリにより、多くのプログラマにとってアプリケーションの品質が大幅に向上し、アプリケーションの品質が向上します。 私の考えは次のように動作するはずです:

xmlファイル

<Test name="Michael" uid="28">
    <Adress street="AlphaBetaGammastrasse 1" city="Zürich" postCode="8000" />

  <Hobbies>
    <Hobby describtion="blabla"/>
    <Hobby describtion="blupblup"/>
  </Hobbies>
</Test>

記入するクラス

@interface Test : NSObject {
    NSString *name;
    Adress *adress;
    NSArray *hobbies;
    int uid;
}
@property (nonatomic, copy) NSString *name;
@property (nonatomic, retain) Adress *adress;
@property (nonatomic, retain) NSArray *hobbies;
@property (nonatomic, readwrite) int uid;
@end

@interface Adress : NSObject {
    NSString *street;
    NSString *city;
    int postCode;
}
@property (nonatomic, copy) NSString *street;
@property (nonatomic, copy) NSString *city;
@property (nonatomic, readwrite) int postCode;
@end

xmlシリアライザの仕組み

NSError *error = nil;
XMLSerializer *serializer = [[XMLSerializer alloc] init];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"TestFile" ofType:@"xml"]];
Test *test = [serializer deserializeWithData:data error:&error];

オブジェクト構造を満たすには、1行のコードしか必要としません。

Test *test = [serializer deserializeWithData:data error:&error];

これは、初心者のプログラマーがそれを使うことができるようにとても使いやすいでしょう。 より高度な使い方のためにシリアライザを構成することができます。

あなたがiPhoneやOSXアプリケーションのために役立つ人気のある図書館になると思いますか?

編集:あなたはここでプロジェクトを見ることができますが、それは離れて運賃です。


NSXMLArchiverとNSXMLUnarchiverをNSCoderのサブクラスとして実装することで、実装することをお勧めします。 このようにして、NSCodingプロトコルに準拠するすべてのクラスをXMLとの間で容易にシリアル化することができます。

オブジェクトがエンコードされるデータを要求する順序を保証することはできないため、XMLにシリアライズするときのパフォーマンスのヒットが属性としてのプリミティブ値になります。 したがって、属性があなたの望むものなら、それはメモリバッファで非常に大きくなります。 しかし、それは楽しい運動になるでしょう。

それがどれほど人気が​​あるのか​​? それほど普及していないと思います。 ユースケースはちょうど小さすぎます。

  • デバイスからデバイスへ - 単純にNSKeyedArchiverを使用する方が簡単ですし、よりコンパクトです。
  • Device-to-newサーバ - 新しいサーバは、Java、C#などにシリアライズして同じスキームを実装する必要があります。
  • デバイスから既存のサーバー - XML形式はすでに修正されており、おそらくこれに近いとは限りません。

私はこのドメインの要件に苦労しており、素晴らしいアイデアだと思っています。 iPhoneで簡単に使用できるようにJSONを返すためにドットネットサービスを悩まさなければならなかった。 まともな直列化ライブラリが優れています。


私は同様のオープンソースプロジェクトを開始しました。 私はそれをSAMIXOSという名前にしました。 このページにアクセスして試すことができます。 初期の開発段階です。 Enyraが尋ねたことと同様に動作します。

すぐにサンプルコードを提供します。

http://sourceforge.net/projects/samixos/

サミ





serialization