3

検索結果のプロパティ リストを iPhone アプリに提供しようとしています。サーバーは Python で書かれたプロトタイプです。

最初に、Python の組み込み plistlib を見つけました。これはすばらしいものです。入力と同時に検索を試してみたいので、可能な限り小さくする必要があり、xml は大きすぎました。バイナリ plist 形式は良い選択のようです。残念ながら、plistlib はバイナリ ファイルを処理しないため、PyObjC を正しく実行してください。

(セグエ: 私は、ライブ検索を実現する方法に関する他の考えを非常にオープンにしています。iPhone のキーボードを上げた状態でウィンドウを埋めるのに十分な結果のみを表示するなど、データを可能な限り削減しました。これは 5 です。)

残念ながら、私は Python を知っており、Cocoa をかなり使いこなせていますが、まだ PyObjC を取得していません。

これは、私がやりたいことと同等のココアです。

NSArray *plist = [NSArray arrayWithContentsOfFile:read_path];
NSError *err;
NSData *data = [NSPropertyListSerialization dataWithPropertyList:plist
                   format:NSPropertyListBinaryFormat_v1_0
                  options:0 //  docs say this must be 0, go figure
                    error:&err];
[data writeToFile:write_path atomically:YES];

私はこのようなことができるはずだと思っていましたが、dataWithPropertyList は NSPropertyListSerialization オブジェクトの dir() リストにありません。また、おそらくリストを NSArray に変換する必要があります。PyObjC のドキュメントを試してみましたが、私の実際の作業とはあまりにも関係があるので、SO SOS も試してみようと思いました。

from Cocoa import NSArray, NSData, NSPropertyListSerialization, NSPropertyListBinaryFormat_v1_0
plist = [dict(key1='val', key2='val2'), dict(key1='val', key2='val2')]
NSPropertyListSerialization.dataWithPropertyList_format_options_error(plist,
    NSPropertyListBinaryFormat_v1_0,
    ?,
    ?)

iPhone側でplistを読み込んでいる様子です。

NSData *data = [NSData dataWithContentsOfURL:url];
NSPropertyListFormat format;
NSString *err;
id it = [NSPropertyListSerialization
         propertyListFromData:data
         mutabilityOption:0
         format:&format
         errorDescription:&err];

これが意味をなさない場合は、喜んで明確にしてください。

4

2 に答える 2

4

正しい関数名は

NSPropertyListSerialization.dataWithPropertyList_format_options_error_

エンディングのため:

(ところで、オブジェクトが常に配列またはディクショナリである場合、-writeToFile:atomically:既に plist (XML 形式として) が書き込まれます。)

于 2010-02-27T06:58:08.540 に答える