iPhone是否有原生的YAML库?

26

我考虑将YAML作为我的下一个iPhone应用的一部分,但我没能找到可用的Objective-C库。

YAML的维基百科页面提到了一个,但链接已失效。

是否有一个Objective-C库可以将YAML解析成本地集合对象(如NSArray、NSDictionary等)?


9
好的,我会尽力进行翻译。以下是您需要翻译的内容:+1 只是因为想使用 YAML - Mark Elliot
1
你找到解决方案了吗?我尝试过YAMLKit,但是无法在iOS上使用。 - Mike Bevz
@MikeBevz 我还没有找到解决方案。我最终在那个项目中使用了JSON。 - Ben S
7个回答

6

Syck的Cocoa扩展可能是您正在寻找的--这似乎是Shaggy Frog提到的库所在地。


6
你可以尝试使用基于LibYAML的YAML.framework,它快速且易于使用。与标准的NSPropertyListSerialization遵循相同的模式。

你可以在iOS(iPhone/iPad)开发中使用它。


嗨,我尝试了yaml.framework,但在序列化方面遇到了问题:它使用UTF16,即使它尝试设置utf8。后来我用yamlkit更顺利一些。 - Chris

5

YAMLKit框架是LibYAML的一个轻量级封装。它能够完美地满足你的需求。例如:

[[YKParser alloc] init];
[p readString:@"- foo\n- bar\n- baz"];
id result = [p parse];
/* result is now an NSArray containing an NSArray with elements:
   @"foo", @"bar", @"baz" */
[p release];

2
YAMLKit不包括libyaml,因此您需要自己获取它。这种方法更加简洁,但也更加麻烦。 - febeling

3

干得好!我看了一遍,发现它非常强大。 - Shmidt
这是我最喜欢的实现方式。使用NSCoding将对象序列化/反序列化为YAML似乎是正确的做法。 - vopilif

1

如果你在iPhone项目中经常写c++,那么请看看yaml-cpp

http://code.google.com/p/yaml-cpp/

  1. 具有本地iPhone支持(通过其cmake构建系统)
  2. 除了良好的编译器和cmake之外,没有其他依赖项
  3. 非常友好的C++语言(因此得名),并且具有可靠的文档(请参见wiki / HowToParseADocument页面)

0

我从YAML的主页发现了this。但看起来它可能已经过时了(约为2004年?),而且CVS链接对我不起作用。

我敢打赌,它只是一个薄薄的包装,包装着类似于thisthis这样的底层C库... C代码是“本地”代码,Objective-C编译器会理解。


是的,这基本上就是我想要的。我知道我可以使用C或C++ YAML解析器,但我真的希望有一个包装器,它返回正确的集合和NSStrings,而不是char*。 - Ben S
我明白你的意思。不幸的是,似乎没有人再制作那个包装器了。我会直接跟进他们的邮件列表...也许有人藏着还没发布的。 - Shaggy Frog

-1
我在寻找YAML + Objective C选项时发现了这个问题。最终我使用了这个解决方案:https://github.com/icanzilb/JSONModel。非常酷,更新及易于使用。它可以将YAML直接解析成Objective C模型,你只需要创建一个继承JSONModel类的模型即可。

这是真的吗?我没有看到那个项目中提到yaml。 - Ben Flynn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接