Swift 对成员'的模糊引用;下标';,当我有一本字典的时候

Swift 对成员'的模糊引用;下标';,当我有一本字典的时候,swift,swift3,Swift,Swift3,我得到一个错误:“对成员“subscript”的不明确引用”,在这行代码中: var messages = sections[startDay] 本节的声明如下: var sections = [NSDate:[Message]]() 那就开始吧 let calendar = NSCalendar.current let startDay = calendar.startOfDay(for: date as Date) 这个错误完全是误导。真正的原因是您不能使用日期类型的键为[NS

我得到一个错误:“对成员“subscript”的不明确引用”,在这行代码中:

var messages = sections[startDay]
本节的声明如下:

var sections = [NSDate:[Message]]()
那就开始吧

let calendar = NSCalendar.current
    let startDay = calendar.startOfDay(for: date as Date)

这个错误完全是误导。真正的原因是您不能使用
日期类型的键为
[NSDate:[Message]]
字典下标
Date
是Swift,
NSDate
是Objective-C。与
String/NSString、Data/NSData、Calendar/NSCalendar
等相同

除非您有很好的理由不这样做,否则请始终在Swift中使用Swift数据类型

var sections = [Date: [Message]]()
let date = Date()
let startDay = Calendar.current.startOfDay(for: date)

var messages = sections[startDay]

您在哪里使用NSDictionary
?你似乎在使用Swift字典,而不是NSDictionary(这是一件好事)。你必须使用Date而不是NSDate,使用Calendar而不是NSCalendar。不,它不起作用。你说它不起作用是什么意思?你真的把
节的声明改成了
var节=[Date:[Message]]()
?是的,我已经试过了,但不起作用。我还没搞错谢谢!我试过了,我在我的代码中发布了它,我把一些东西弄错了,但是修改成功了!