通过ivar进入方法Swift

时间:2015-05-11 21:15:21

标签: ios swift

我正在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

        }

    }

2 个答案:

答案 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
    }
}

这肯定无法解决您的问题,但它可能有助于您确定错误发生的位置。

希望这有帮助!