Я пытаюсь отправить список свойств результатов поиска в приложение для iPhone. Сервер является прототипом, написанным на Python.
Сначала я нашел встроенный в Python plistlib, который просто потрясающий. Я хочу сделать снимок типа «поиск при вводе», поэтому мне нужно, чтобы он был как можно меньше, а xml был слишком большим. Бинарный формат plist кажется хорошим выбором. К сожалению, plistlib не работает с бинарными файлами, поэтому перейдите прямо к PyObjC.
(Segue: я очень открыт для любых других мыслей о том, как выполнить поиск в режиме реального времени. Я уже максимально сократил данные, включая только отображение достаточного количества результатов, чтобы заполнить окно с клавиатурой iPhone вверх, что 5.)
К сожалению, хотя я знаю Python и неплохо отношусь к Какао, я все еще не получаю 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 отсутствует в списке dir () объектов 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.
NSData *data = [NSData dataWithContentsOfURL:url];
NSPropertyListFormat format;
NSString *err;
id it = [NSPropertyListSerialization
propertyListFromData:data
mutabilityOption:0
format:&format
errorDescription:&err];
С удовольствием уточню, если это не имеет смысла.