公平警告:我绝对不知道 Objective-C。我正在为 PyObjC 使用 Foundation 模块。
我有一本字典,我用它来创建一个NSDictionary
. 一个例子:
from Foundation import NSDictionary
d = {'a': 1, 'b': 2, 'c': 3}
nsd = NSDictionary(d)
我知道我可以使用 将 的内容写入nsd
文件nsd.writeToFile_atomically_()
,但我不知道如何获取包含所有 plist-y XML 的字符串。你可能认为我可以使用一个StringIO
对象,但是:
>>> import StringIO
>>> s = StringIO.StringIO()
>>> nsd.writeToFile_atomically_(s,True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: NSInvalidArgumentException - Class OC_PythonObject: no such selector: getFileSystemRepresentation:maxLength:
我无法对帮助页面做出正面或反面,并且我尝试过搜索 SO 和整个网络,人们似乎对做与我想做的相反的事情更感兴趣。
我想要的是能够做这样的事情:
plst = nsd.asPlistyString_()
或者也许我必须使用一个NSSString
,我不知道:
plst = NSString.makePlistyStringFromDictionary_(nsd)
无论哪种方式,plst
都会像"<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC"
yada yada。有人可以指出我正确的方向吗?
编辑:我知道,plistlib
但我正在尝试直接与 Foundation 一起执行此操作,以帮助我的代码与未来兼容。(plistlib
虽然很不错。)