我正在Swift中制作一个简单的提醒应用程序,我很难弄清楚为什么我无法编译我的方法。
for reminder in self.reminders {
if dates.contains(dateFormatter.stringFromDate(reminder.date)) {
dates.add(reminderDate)
}
}
在致电stringFromDate
时,我收到错误消息
“无法使用类型的参数列表调用”stringFromDate“(NSDate?!)”
date
ivar是一个NSDate,我需要能够调用它吗?
我将该属性声明为var date: NSDate
属性var reminders = []
class TRReminder {
enum TRPriority {
case Low, Medium, High
}
var title: String
var date: NSDate
var location: String
var priority: TRPriority
var note: String
init(title: String, date: NSDate, location: String, priority: TRPriority, note: String) {
self.title = title
self.date = date
self.location = location
self.priority = priority
self.note = note
}
}
答案 0 :(得分:1)
这样做
var reminders = [TRReminder]()
我认为,将其声明为[]
相当于[AnyObject?]
答案 1 :(得分:0)
有时候最好先分解一下这个方法,看看这里有什么潜在的循环漏洞,尝试用输出来替换你的实现,看看你是否遗漏了任何东西:
for reminder in self.reminders {
println("\(reminder)") //sanity check
if let date = reminder.date {
if let formattedDate = dateFormatter.stringFromDate(date) {
if dates.contains(formattedDate) {
dates.add(reminderDate) //the logic here seems a bit confusing? where does reminderDate come from?
}
} else {
println("oops") //yet another sanity check
}
} else {
println("something went wrong here") // another sanity check
}
}
这肯定无法解决您的问题,但它可能有助于您确定错误发生的位置。
希望这有帮助!