无法将函数中的值分配给字典数组Swift 4

时间:2019-02-27 10:16:20

标签: swift firebase google-cloud-firestore

在可能相关的两种不同情况下,我遇到了以下错误。错误是:

  

lldb线程1:致命错误:展开一个可选值时意外发现nil

这是第一种情况的代码:

db.collection("properties").getDocuments()
{
    (querySnapshot, err) in
    if let err = err
    {
        print("Error getting documents: \(err)");
    }
    else
    {
        for document in querySnapshot!.documents {
            var propertyData = [String:[String]]()
            let listingType = (document.get("listingType") as! [String])
            propertyData["listingType"]![0] = listingType[0]

        }

    }
}

我正在尝试获取我在Firestore中已设置的属性的列表。我可以将listingType变量打印到控制台,然后成功打印“ Sale”。但是,当我分配变量时,它将给出该错误。

使用位置管理器功能时,我遇到了相同的问题。如果获取用户的当前位置坐标,则当我尝试将这些坐标添加到全局字典时,会引发相同的错误。我正在用Swift 4编写代码。

1 个答案:

答案 0 :(得分:1)

您不能只为[0]分配内容,因为数组最初是nil

if propertyData["listingType"] == nil {
    propertyData["listingType"] = [listingType[0]] //Create a new array with the string
} else {
    propertyData["listingType"]![0] = listingType[0]
}