我试了几个小时,每种可能的组合,并不能得到它的工作。类型'任何'没有下标成员与地图的错误
我的功能:
func allItems() -> [TodoItem] {
let todoDictionary = UserDefaults.standard.dictionary(forKey: ITEMS_KEY) ?? [:]
let items = Array(todoDictionary.values)
return items.map({TodoItem(
deadline: $0["deadline"] as! Date,
title: $0["title"] as! String,
UUID: $0["UUID"] as! String!,
description: $0["description"] as! String,
imageSavePath: ($0["imageSavePath"] as! String),
isItComplete: $0["isItComplete"] as! Bool
)}).sorted(by: {(left: TodoItem, right:TodoItem) -> Bool in
(left.deadline.compare(right.deadline) == .orderedAscending)
})
}
给我的错误“型 '任何' 无标成员。 我已经研究并试图改变:
func allItems() -> [TodoItem]
到
func allItems() -> [Any:[TodoItem]]
然而,这引起了那个“类型的任何不符合哈希的协议”的错误。这是正确的路线吗?
请在我的macbook出门前帮忙.....
还没有一个设计错误?字典中带有键/值对的对象。你的映射只适用于每个**值**本身就是一个我怀疑的词典。 – vadian
你究竟想要返回什么,数组或字典? – Alexander
这在swift 3.0之前完美运行,所以我不认为这是一个设计错误。目标是返回由DueDate排序的'ToDoItems'数组。 – MartynE23