gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:33 27 4
gpt4 key购买 nike

我正在尝试向我的 iPhone 应用程序提供搜索结果的属性列表。服务器是用 Python 编写的原型(prototype)。

首先我发现了 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 格式)。)

关于python - 尝试从 Python (w/PyObjC) 写入二进制 plist 格式,以便由 Cocoa Touch 获取和读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com