gpt4 book ai didi

swift - 解包 Optional 值时意外发现 nil

转载 作者:行者123 更新时间:2023-11-28 05:34:19 24 4
gpt4 key购买 nike

可能是我没理解清楚可选值:

class func albumsWithJSON(allResults: NSArray) -> [Album] {
var albums = [Album]()
if allResults.count>0 {
for result in allResults {
var name = result["trackName"] as? String
if name == nil {
name = result["collectionName"] as? String
}

var price = result["formattedPrice"] as? String
if price == nil {
price = result["collectionPrice"] as? String
if price == nil {
var priceFloat: Float? = result["collectionPrice"] as? Float
var nf: NSNumberFormatter = NSNumberFormatter()
nf.maximumFractionDigits = 2;
if priceFloat != nil {
price = "$"+nf.stringFromNumber(priceFloat)
}
}
}

let thumbnailURL = result["artworkUrl60"] as String
let imageURL = result["artworkUrl100"] as String
let artistURL = result["artistViewUrl"] as? String

var itemURL = result["collectionViewUrl"] as? String
if itemURL == nil {
itemURL = result["trackViewUrl"] as? String
}

var newAlbum = Album(name: name!, price: price!, thumbnailImageURL: thumbnailURL, largeImageURL: imageURL, itemURL: itemURL!, artistURL: artistURL!)
albums.append(newAlbum)
}
}
}

在这一行我得到“unexpectedly found nil while unwrapping an Optional value”错误:

var newAlbum = Album(name: name!, price: price!, thumbnailImageURL: thumbnailURL, largeImageURL: imageURL, itemURL: itemURL!, artistURL: artistURL!)

显然 JSON 中缺少一些信息,但是我该如何处理缺失值?

最佳答案

该错误意味着您传递给该函数的其中一个值是 nil。当您将 ! 放在这些值的末尾时,它会解包。如果展开时值为 nil,则会抛出异常。

解决这个问题的方法取决于 nil 值的重要性。如果您不能接受其中任何一个是 nil,那么您将不得不检查 nil 并做一些事情。如果您可以让它们为 nil,那么您需要确保该函数接受 nil 值。

为了更好地理解可选值,您应该阅读文档:https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_483

关于swift - 解包 Optional 值时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25394749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com