我試圖將搜索結果的屬性列表提供給我的iPhone應用程序。服務器是一個用Python編寫的原型。嘗試從Python(w/PyObjC)寫入二進制plist格式以獲取並由Cocoa Touch讀取
首先我發現了Python的內置plistlib,這很棒。我想給你一個類型的搜索,所以我需要它儘可能小,而xml太大了。二進制plist格式似乎是一個不錯的選擇。不幸的是,plistlib不會執行二進制文件,因此請立即調用PyObjC。 (Segue:我對任何關於如何完成實時搜索的想法都很開放,我已經儘可能地減少了數據,包括只顯示足夠的結果來填充iPhone鍵盤的窗口,是的。)
不幸的是,儘管我知道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對象目錄()上市。我也應該可能將列表轉換爲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];
很高興澄清,如果任何這是沒有意義的。
能-writeToFile:原子使用二進制plist格式?我實際上並不想將它寫入磁盤,我需要將它打印出來以用於HTTP響應。 – zekel 2010-02-27 08:20:11
@zekel:XML格式(除非設置了'NSWriteOldStylePropertyLists'環境變量)。 – kennytm 2010-02-27 08:30:55
它看起來不像NSWriteOldStylePropertyLists是與二進制格式相同的東西。它是「指定文本屬性列表輸出是否應該採用默認的MacOS-X格式(XML),或者是更易讀的(但功能更強大)原始OpenStep格式。」 – zekel 2010-03-01 21:51:36