作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在parseJSON()
函数中迅速找到了此代码,它将检索json文件中的Makes
,但是我收到一条错误消息,说fatal error: unexpectedly found nil while unwrapping an Optional value
注意:我正在使用SwiftyJSON,错误指向if condition
func parseJSON() {
let path: String = NSBundle.mainBundle().pathForResource("vehicles", ofType: "json") as String!
let jsonData = NSData(contentsOfFile: path) as NSData!
let readableJSON = JSON(data: jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil)
numberOfRows = readableJSON.count
for element in 1...numberOfRows {
var Makes = readableJSON[element]["Make"]
if !makeArray.contains(Makes.string! && ){ // error is pointing here!
let Make = readableJSON[element]["Make"].string as String!
makeArray.append(Make)
}
}
}
最佳答案
SwiftyJSON对象的.string
属性是可选的getter。
它的值可以存在或为零。
因此,在使用前必须安全地将其拆开。
最简单的例子:
if let makeString = Makes.string {
if !makeArray.contains(makeString) {
let Make = readableJSON[element]["Make"].stringValue
makeArray.append(Make)
}
}
.string
getter的反面是非可选的
.stringValue
getter。
.stringValue
与
.string!
相同
if let makeString = Makes.string {
if !makeArray.contains(makeString) {
if let Make = readableJSON[element]["Make"].string {
makeArray.append(Make)
} else {
// readableJSON[element]["Make"].string is nil, handle the error
}
}
} else {
// Makes.string is nil, handle the error
}
where
这样简化:
if let makeString = Makes.string where !makeArray.contains(makeString) {
if let Make = readableJSON[element]["Make"].string {
makeArray.append(Make)
} else {
// readableJSON[element]["Make"].string is nil, handle the error
}
} else {
// Either Makes.string is nil or makeArray does contain it, handle the rror
}
关于ios - fatal error :使用JSON文件和SwiftyJSON解开可选值时意外发现nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35701856/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!