tom*_*obi 23 swift swifty-json
我正在尝试找到一种方法来获取SwiftyJSON字典中的键的值,并返回一个默认字符串,如果未设置该键.以下示例工作正常,但我并不满意.你知道更优雅的方式吗?
let users: JSON = [
["id": 1, "name": "one"],
["id": 2],
["id": 3, "name": "three"]
]
for (key: String, user: JSON) in users {
println(user.object.objectForKey("name") != nil
? user["name"].stringValue
: "default")
}
Run Code Online (Sandbox Code Playgroud)
cia*_*uri 27
在最新 SwiftyJSON的版本具有的exists()
功能.
注意:他们最新的文档并没有很好地反映代码......实际的方法是exists()
// Returns boolean
json["name"].exists()
Run Code Online (Sandbox Code Playgroud)
看来,SwiftyJSON error
在subscript
不存在键时设置属性.
所以,这应该有效:
for (key: String, user: JSON) in users {
let name = user["name"];
println(name.error == nil ? name.stringValue : "default")
}
Run Code Online (Sandbox Code Playgroud)
例如:w/Version 6.1.1(6A2006),SwiftyJSON github current master:
let users: JSON = [
["id": 1, "name": "one"],
["id": 2],
["id": 3, "name": NSNull()],
["id": 4, "name": "four"],
]
for (key: String, user: JSON) in users {
let name = user["name"];
name.isEmpty
println(name.error == nil ? name.stringValue : "default")
}
Run Code Online (Sandbox Code Playgroud)
打印:
one
default
four
Run Code Online (Sandbox Code Playgroud)
如果您需要检查SwiftyJSON
字典是否有密钥,可以将其与JSON.null
以下内容进行比较:
user["name"] == JSON.null // true if the key does not exist
Run Code Online (Sandbox Code Playgroud)
使用该方法,您的代码可能如下所示:
let users: JSON = [
["id": 1, "name": "one"],
["id": 2],
["id": 3, "name": "three"]
]
for (key, user) in users {
print(user["name"] != JSON.null ? user["name"].stringValue : "default")
}
Run Code Online (Sandbox Code Playgroud)
如果您只想提供默认值,那么您可以在Swift()中使用Nil Coalescing Operator,??
如下所示:
let users: JSON = [
["id": 1, "name": "one"],
["id": 2],
["id": 3, "name": "three"]
]
for (key, user) in users {
print(user["name"].string ?? "default")
}
Run Code Online (Sandbox Code Playgroud)
SwiftJSON提供了string
方法,该方法返回一个可选的value(String?
),相反,stringValue
它总是返回一个String
.
归档时间: |
|
查看次数: |
17241 次 |
最近记录: |