Я пытаюсь выполнить список свойств результатов поиска для своего iPhone-приложения. Сервер является прототипом, написанным на Python.Пытается записать в бинарный формат plist из Python (w/PyObjC), который будет извлечен и прочитан Cocoa Touch
Сначала я нашел встроенный plistlib Python, который является удивительным. Я хочу дать возможность поиска по вашему типу, поэтому мне нужно, чтобы он был как можно меньше, а xml был слишком большим. Формат бинарного пластика кажется хорошим выбором. К сожалению, plistlib не выполняет двоичные файлы, поэтому шаг вверх по PyObjC.
(Segue: Я очень открыт для любых других соображений о том, как выполнить поиск в реальном времени. Я уже максимально упростил данные, включая только отображение достаточного количества результатов, чтобы заполнить окно клавиатурой 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 объекты реж() листинг. Вероятно, я также должен преобразовать список в 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,
?,
?)
Это как я читаю в plist на стороне iPhone.
NSData *data = [NSData dataWithContentsOfURL:url];
NSPropertyListFormat format;
NSString *err;
id it = [NSPropertyListSerialization
propertyListFromData:data
mutabilityOption:0
format:&format
errorDescription:&err];
Счастье, чтобы уточнить, нет ли в этом никакого смысла.
Может -writeToFile: атомарно использовать бинарный формат plist? И я на самом деле не хочу записывать его на диск, мне нужно распечатать его для ответа HTTP. – zekel
@zekel: формат XML (если не задана переменная среды NSWriteOldStylePropertyLists). – kennytm
не похоже, что NSWriteOldStylePropertyLists - это то же самое, что и двоичный формат. Он «Указывает, должен ли вывод текста свойств свойства должен быть в формате MacOS-X по умолчанию (XML) или в более читаемом (но менее мощном) оригинальном формате OpenStep для человека.» – zekel