当字典不为零时,在字典中找到nil值

时间:2017-09-06 19:45:56

标签: ios swift dictionary optional

我想从字典中的字符串创建URL,但是当我初始化它时,guard语句转到else语句,因为values["Image"]nil和{{ 1}}这个功能。这是我的一段代码

return

我在代码中创建了一个断点:

enter image description here

这是我在此断点处的控制台日志:

enter image description here

我错过了什么?

P.S 我试着这样做:

guard let imageURLInDatabase = URL(string: values["Image"]!) else { return } let data = NSData(contentsOf: imageURLInDatabase)

但我收到错误消息let imageURLInDatabase = URL(string: values["Image"]!)

编辑1: 我试着像

那样做
unexpectedly found nil while unwrapping an optional value

设置断点: enter image description here

所以 guard let imageString = values["Image"] else{return} guard let imageURLInDatabase = URL(string: imageString) else{ return} let data = NSData(contentsOf: imageURLInDatabase) 不能为零

编辑2:

这是values["Image"]enter image description here

中的内容
values["Image"]

4 个答案:

答案 0 :(得分:4)

问题是URL字符串末尾的额外引号。试试这个:

numbers = [float(i) for i in user_input.split(','))

你会得到let s = "https://firebasestorage.googleapis.com/v0/b/blackjack-ef580.appspot.com/o/profiles_images%2FdwMGR8sKMvYauf6uQDtyop18cwy1.jpg?alt=media&token=5df48794-d3fd-4e5c-a72c-9928a8a43c4e\"" let url = URL(string:s)

答案 1 :(得分:3)

问题不在于values["Image"]nil。问题是values["Image"]不是值URL字符串。

确保正确编码网址中的空格和其他特殊字符。

作为旁注,请勿使用NSData,请使用Data

答案 2 :(得分:0)

根据您的追踪,问题不是value["Image"]nil。如果是这种情况,你就会崩溃而不是叫return。您的问题是无论value["Image"]的价值如何,它都不是有效的URL。没有看到价值,很难确切地知道它有什么问题,但它在某种程度上是畸形的。

答案 3 :(得分:-1)

这是因为字典values不包含密钥Image。所以values['Image']将返回nil,强制展开nil会使应用程序崩溃。

尝试使用guard else语句打开它

guard let imageValue = values["Image"] as? String else {
   //imageValue is nil here, handle accordingly
    return
}

guard let imageURLInDatabase = URL(string: imageValue) else {
  //imageURLInDatabase is nil here, handle accordingly
    return
}

let data = NSData(contentsOf: imageURLInDatabase)

修改1:

使用更新后的问题和断点图像,值[“Image”]不为空,imageURLInDatabase为零,因为它转到了其他情况。

原因可能是值[“Image”]可能没有返回有效的URL,因为URL(字符串:..)失败。

编辑2:

检查您刚刚分享的字符串网址

"https://firebasestorage.googleapis.com/v0/b/blackjack-ef580.appspot.com/o/profiles_images%2FdwMGR8sKMvYauf6uQDtyop18cwy1.jpg?alt=media&token=5df48794-d3fd-4e5c-a72c-9928a8a43c4e\""

最后还有一个额外的引用!