编程语言
首页 > 编程语言> > 尝试从Python(w / PyObjC)写入二进制plist格式,以便由Cocoa Touch读取和读取

尝试从Python(w / PyObjC)写入二进制plist格式,以便由Cocoa Touch读取和读取

作者:互联网

我正在尝试将搜索结果的属性列表提供给我的iPhone应用程序.服务器是一个用Python编写的原型.

首先,我发现了Python的内置plistlib,非常棒.我想给你一个搜索类型的镜头,所以我需要它尽可能小,而xml太大了.二进制plist格式似乎是一个不错的选择.不幸的是,plistlib没有做二进制文件,所以一步到位PyObjC.

(Segue:我对如何完成实时搜索的任何其他想法都非常开放.我已经尽可能地减少了数据,包括只显示足够的结果来填充iPhone键盘的窗口,这是5.)

不幸的是,虽然我知道Python并且使用Cocoa变得相当不错,但我仍然没有得到PyObjC.

这是Cocoa相当于我想要做的事情:

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];

很高兴澄清这些是否有意义.

解决方法:

我相信正确的函数名称是

NSPropertyListSerialization.dataWithPropertyList_format_options_error_

因为结局:.

(顺便说一句,如果对象总是数组或字典,-writeToFile:atomically:将编写plist(作为XML格式).)

标签:pyobjc,python,search,cocoa-touch
来源: https://codeday.me/bug/20190827/1741491.html