私のアプリケーションはNSTaskを使用してPythonスクリプトを開始し、スクリプトはNSPipeを介して配列を返します。データを読み取り、文字列に貼り付けて表示します。
NSMutableData *data = [[NSMutableData alloc] init];
NSData *readData;
while ((readData = [readHandle availableData])&& [readData length]) {
[data appendData: readData];
}
NSString *string = [[NSString alloc]
initWithData: data
encoding: NSUTF8StringEncoding];
それはすべて問題ありませんが、文字列ではなく配列として保持する必要があることに気付きました。データ(NSPipeから返されたデータ)から配列を開始するメソッドが見つかりません。どうやってやるの?私が見つけた最も近いものはおそらく使用しています:
[NSPropertyListSerialization dataWithPropertyList:format:options:error:]
...しかし、「プロパティリスト」自体は必要ありません。最初にデータをplistに変換する必要がありますか?
編集:思ったよりも複雑だと気づきました。Pythonは辞書の配列を返しますが、辞書には文字列があります。これらの文字列にはコンマやその他の文字を含めることができるため、「、」区切り文字を使用して文字列を分割することはできないと思います。
Pythonの場合:
msg_set = []
msg_set = [
dict(mts="t,s1", mfrom="f@ro,m1", msbj="msb,j1", mbody="bod,y1", mid="i,d1"),
dict(mts="ts2", mfrom="from2", msbj="msb,j2", mbody="body2", mid="id2")
]
print msg_set # <- this is what python returns