我的应用程序使用 NSTask 启动 Python 脚本,然后脚本通过 NSPipe 返回一个数组。我读取数据,将其粘贴在一个字符串中,然后显示它:
NSMutableData *data = [[NSMutableData alloc] init];
NSData *readData;
while ((readData = [readHandle availableData])&& [readData length]) {
[data appendData: readData];
}
NSString *string = [[NSString alloc]
initWithData: data
encoding: NSUTF8StringEncoding];
没关系,但我意识到我真的需要将它保存为一个数组 - 而不是一个字符串。我找不到从数据(从 NSPipe 返回的数据)启动数组的方法。我怎样才能做到这一点?我发现最接近的可能是使用:
[NSPropertyListSerialization dataWithPropertyList:format:options:error:]
...但我本身不需要“财产清单”。我必须先将数据转换为 plist 吗?
编辑:我刚刚意识到它比我想象的要复杂。Python 返回一个字典数组,字典中有字符串。这些字符串可以有逗号和其他字符,所以我认为我不能使用“,”分隔符来分解它。
在 Python 中:
msg_set = []
msg_set = [
dict(mts="t,s1", mfrom="f@ro,m1", msbj="msb,j1", mbody="bod,y1", mid="i,d1"),
dict(mts="ts2", mfrom="from2", msbj="msb,j2", mbody="body2", mid="id2")
]
print msg_set # <- this is what python returns