【发布时间】:2019-05-13 05:56:34
【问题描述】:
当我尝试打印字典键 fromdate 的值时,它会显示错误,即使它包含具有该特定键的值。
线程 1:致命错误:打开包装时意外发现 nil 可选值
这是在字典中保存值的代码。
func saveRecentSearch() {
var dictSearch = [String:Any]()
if let onJourney = Global.onWordJ {
dictSearch["From"] = onJourney.source?.CM_CityName
dictSearch["Fromid"] = onJourney.source?.CM_CityID
dictSearch["To"] = onJourney.destination?.CM_CityName
dictSearch["Toid"] = onJourney.destination?.CM_CityID
let date = onJourney.journeyDate
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let myString = formatter.string(from: date!)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
let updatedString = formatter.string(from: yourDate!)
print(updatedString)
dictSearch["fromdate"] = updatedString
}
密钥fromdate 已保存该日期。查看图片
但是当我尝试检索该数据时,在“fromdate”键中发现它为零。这是代码。
var arrSearch = [[String:Any]]()
override func viewDidLoad() {
super.viewDidLoad()
if let arr = UserDefault["Search"] {
arrSearch.append(contentsOf: (arr as! [[String:Any]]))
}
self.tblSearch.reloadData()
}
tableView 方法
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RecentCell") as! RecentCell
cell.selectionStyle = .none
let dict = arrSearch[indexPath.row]
cell.lblFrom.text = (dict["From"] as! String)
cell.lblTo.text = (dict["To"] as! String)
let strDate = (dict["fromdate"])
cell.lblDate.text = (strDate as! String) //This line showing Error
return cell
}
代码有什么问题?我得到了所有的值,其余的都是 fromdate 键值。
【问题讨论】:
-
怎么样?我已经将值分配给
lblDate -
你的两种方法可能没有使用同一个字典。
-
如果你确定这个字段肯定会返回值,那么试试这个:
let strDate = (dict["fromdate"]!) -
试试同样的错误。 @丹尼斯
-
@KrunalNagvadia,然后检查您的
lblDate插座是否在单元内正确连接。
标签: ios swift xcode dictionary null