YamlSwift
YamlSwift
解析 YAML 文档字符串(或 JSON 文档),并返回表示该字符串的 Yaml
枚举值。
安装
使用 Carthage 进行构建和安装。
或者使用 CocoaPods : 将 pod 'Yaml'
添加到您的 Podfile
中,并运行 pod install
。
它支持 Swift Package Manager。
.package(
url: "https://github.com/behrang/YamlSwift.git",
from: "
而且
.target(
name: "YourProject",
dependencies: ["Yaml"]),
API
导入
要使用它,您应该使用以下语句导入:
import Yaml
Yaml
Yaml值可以是以下任何一种情况
enum Yaml {
case null
case bool(Bool)
case int(Int)
case double(Double)
case string(String)
case array([Yaml])
case dictionary([Yaml: Yaml])
}
Yaml.load
Yaml.load (String) throws -> Yaml
接受一个 YAML 文档的字符串并返回一个 Yaml
枚举。
let value = try! Yaml.load("a: 1\nb: 2")
print(value["a"]) // Int(1)
print(value["b"]) // Int(2)
print(value["c"]) // Null
如果输入文档无效或包含多个 YAML 文档,将抛出错误。
do {
let value = try Yaml.load("a\nb: 2")
}
catch {
print(error) // expected end, near "b: 2"
}
Yaml.loadMultiple
Yaml.loadMultiple (String) throws -> [Yaml]
接受一个包含一个或多个 YAML 文档的字符串,并返回 [Yaml]
。
let value = try! Yaml.loadMultiple("---\na: 1\nb: 2\n---\na: 3\nb: 4")
print(value[0]["a"]) // Int(1)
print(value[1]["a"]) // Int(3)
如果在任何文档中遇到错误,将抛出错误。
Yaml#[Int] -> Yaml
value[Int] -> Yaml
value[Int] = Yaml
如果对一个 Yaml.array
值使用,将返回指定索引的值。如果索引无效或值不是 Yaml.array
,则返回 Yaml.null
。您也可以设置指定索引的值。如果值不是 Yaml.array
,则在设置后将转换为它。
var value = try! Yaml.load("- Behrang\n- Maryam")
print(value[0]) // String(Behrang)
print(value[1]) // String(Maryam)
print(value[2]) // Null
value[2] = "Radin"
print(value[2]) // String(Radin)
Yaml#[Yaml] -> Yaml
value[Yaml] -> Yaml
value[Yaml] = Yaml
如果对一个 Yaml.dictionary
值使用,将返回指定键的值。如果指定键不存在或值不是 Yaml.dictionary
,则返回 Yaml.null
。您也可以设置指定键的值。如果值不是 Yaml.dictionary
,则在设置后将转换为它。
由于 Yaml
是一个可转换的文本类型,您可以将简单值传递给此方法。
var value = try! Yaml.load("first name: Behrang\nlast name: Noruzi Niya")
print(value["first name"]) // String(Behrang)
print(value["last name"]) // String(Noruzi Niya)
print(value["age"]) // Null
value["first name"] = "Radin"
value["age"] = 1
print(value["first name"]) // String(Radin)
print(value["last name"]) // String(Noruzi Niya)
print(value["age"]) // Int(1)
Yaml#bool
value.bool -> Bool?
返回一个 Optional
值。如果值是一个 Yaml.bool
值,则返回包装值。否则返回 nil
。
let value = try! Yaml.load("animate: true\nshow tip: false\nusage: 25")
print(value["animate"].bool) // Optional(true)
print(value["show tip"].bool) // Optional(false)
print(value["usage"].bool) // nil
Yaml#int
value.int -> Int?
返回一个 Optional
值。如果值是一个 Yaml.int
值,则返回包装的值。否则返回 nil
。
let value = try! Yaml.load("a: 1\nb: 2.0\nc: 2.5")
print(value["a"].int) // Optional(1)
print(value["b"].int) // Optional(2)
print(value["c"].int) // nil
Yaml#double
value.double -> Double?
返回一个 Optional
值。如果值是一个 Yaml.double
值,则返回包装的值。否则返回 nil
。
let value = try! Yaml.load("a: 1\nb: 2.0\nc: 2.5\nd: true")
print(value["a"].double) // Optional(1.0)
print(value["b"].double) // Optional(2.0)
print(value["c"].double) // Optional(2.5)
print(value["d"].double) // nil
Yaml#string
value.string -> String?
返回一个 Optional
值。如果值是一个 Yaml.string
值,则返回包装的值。否则返回 nil
。
let value = try! Yaml.load("first name: Behrang\nlast name: Noruzi Niya\nage: 33")
print(value["first name"].string) // Optional("Behrang")
print(value["last name"].string) // Optional("Noruzi Niya")
print(value["age"].string) // nil
Yaml#array
value.array -> [Yaml]?
返回一个 Optional
值。如果值是一个 Yaml.array
值,则返回包装的值。否则返回 nil
。
let value = try! Yaml.load("languages:\n - Swift: true\n - Objective C: false")
print(value.array) // nil
print(value["languages"].array) // Optional([Dictionary([String(Swift): Bool(true)]), Dictionary([String(Objective C): Bool(false)])])
Yaml#dictionary
value.dictionary -> [Yaml: Yaml]?
返回一个 Optional
值。如果值是一个 Yaml.dictionary
值,则返回包装的值。否则返回 nil
。
let value = try! Yaml.load("- Swift: true\n- Objective C: false")
print(value.dictionary) // nil
print(value[0].dictionary) // Optional([String(Swift): Bool(true)])
Yaml#count
value.count -> Int?
返回一个Optional<Int>
值。如果值是Yaml.array
或Yaml.dictionary
值,返回元素计数。否则返回nil
。
let value = try! Yaml.load("- Swift: true\n- Objective C: false")
print(value.count) // Optional(2)
print(value[0].count) // Optional(1)
print(value[0]["Swift"].count) // nil
许可证
MIT