通过 NSDate 检查值是否存在作为字典中的键
check value existence by NSDate as key in dictionary
我有这样一本字典:
var dic = [NSDate: Int]()
它在我的 iOS 待办事项应用程序中用于获取特定日期的已完成任务数。我只关心 NSDate 中的年、月和日部分,还希望能够使用这本字典获取特定日期的任务数,我该怎么做?谢谢。
您可以将日期保存为字符串,而不是将日期保存为字典中的 NSDate,这样比较会更容易。使用以下代码将其存储为字符串
func dateFromString(date : NSDate) -> String {
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
return dateFormatter.stringFromDate(date)
}
您可以将 NSDate() 传递给上述函数,它会为您提供仅包含年、月和日的字符串。要从字典中检索数据,请使用以下内容。
func dateFrom(year:Int, month:Int, day:Int) -> String {
let components = NSDateComponents()
components.year = year
components.month = month
components.day = day
let gregorian = NSCalendar(identifier:NSCalendarIdentifierGregorian)
let date = gregorian!.dateFromComponents(components)
return dateFromString(date!)
}
您可以将年、月和日期传递给上述函数,它会return 以字符串格式对应日期。所以你的字典操作看起来像
dict[dateFromString(NSDate())] = 1 //for insertion or updation
let numOfTasks = dict[dateFrom(2016, month: 1, day: 15)] //to get task for any particular day
编辑
如果你想继续使用 NSDate 作为字典的键,那么你必须按如下方式修改上面的代码。 dateFrom 将 return 日期与您选择的年、月和日期,时间将是某个常数值。如果您不设置,时间将设置为您当前时区的午夜。
func dateFrom(year:Int, month:Int, day:Int) -> NSDate {
let components = NSDateComponents()
components.year = year
components.month = month
components.day = day
let gregorian = NSCalendar(identifier:NSCalendarIdentifierGregorian)
let date = gregorian!.dateFromComponents(components)
return date!
}
要获取当前日期,请使用以下内容,以便将具有当前年份、日期、月份和时间的日期对象存储为某个常量值。
func getCurrentDate()->NSDate {
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Day , .Month , .Year], fromDate: date)
return dateFrom(components.year, month: components.month, day: components.day)
}
用法如下
dict[getCurrentDate()] = i //for insertion or updation
let numOfTasks = dict[dateFrom(2016, month: 1, day: 15)] //to get task for any particular day
我有这样一本字典:
var dic = [NSDate: Int]()
它在我的 iOS 待办事项应用程序中用于获取特定日期的已完成任务数。我只关心 NSDate 中的年、月和日部分,还希望能够使用这本字典获取特定日期的任务数,我该怎么做?谢谢。
您可以将日期保存为字符串,而不是将日期保存为字典中的 NSDate,这样比较会更容易。使用以下代码将其存储为字符串
func dateFromString(date : NSDate) -> String {
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
return dateFormatter.stringFromDate(date)
}
您可以将 NSDate() 传递给上述函数,它会为您提供仅包含年、月和日的字符串。要从字典中检索数据,请使用以下内容。
func dateFrom(year:Int, month:Int, day:Int) -> String {
let components = NSDateComponents()
components.year = year
components.month = month
components.day = day
let gregorian = NSCalendar(identifier:NSCalendarIdentifierGregorian)
let date = gregorian!.dateFromComponents(components)
return dateFromString(date!)
}
您可以将年、月和日期传递给上述函数,它会return 以字符串格式对应日期。所以你的字典操作看起来像
dict[dateFromString(NSDate())] = 1 //for insertion or updation
let numOfTasks = dict[dateFrom(2016, month: 1, day: 15)] //to get task for any particular day
编辑
如果你想继续使用 NSDate 作为字典的键,那么你必须按如下方式修改上面的代码。 dateFrom 将 return 日期与您选择的年、月和日期,时间将是某个常数值。如果您不设置,时间将设置为您当前时区的午夜。
func dateFrom(year:Int, month:Int, day:Int) -> NSDate {
let components = NSDateComponents()
components.year = year
components.month = month
components.day = day
let gregorian = NSCalendar(identifier:NSCalendarIdentifierGregorian)
let date = gregorian!.dateFromComponents(components)
return date!
}
要获取当前日期,请使用以下内容,以便将具有当前年份、日期、月份和时间的日期对象存储为某个常量值。
func getCurrentDate()->NSDate {
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Day , .Month , .Year], fromDate: date)
return dateFrom(components.year, month: components.month, day: components.day)
}
用法如下
dict[getCurrentDate()] = i //for insertion or updation
let numOfTasks = dict[dateFrom(2016, month: 1, day: 15)] //to get task for any particular day