我有以下代码将多个日期作为NSDate
返回 func setUpDays() {
var datesArray = [String]()
datesArray.append("28.03.2016")
datesArray.append("26.03.2016")
datesArray.append("27.03.2016")
for i in 0...datesArray.count-1 {
let dates2Convert = datesArray[i]
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
let day = dateFormatter.dateFromString(dates2Convert)
print(day)
}
}
这是完美的。现在我想从核心数据而不是datesArray
中获取这些日期var dates = [NSManagedObject]()
func setUpDays() {
for i in 0...2 {
let currentDates = dates[i]
let date2Convert = currentDates.valueForKey("date") as? String
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
let day = dateFormatter.dateFromString(date2Convert)
print(day)
}
}
但是let currentDates = dates[i]
代码抛出了以下异常:
日期正确保存在核心数据中。如果我打印出来,他们就会纠正。我错过了什么?非常感谢帮助。
根据要求:这是核心数据填充日期字符串的方式。
func parser(parser: NSXMLParser, foundCharacters string: String) {
let str = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if parsedElement == "eventDates" && str != "" {
if currentEvent.eventDates.isEmpty {
currentEvent.eventDates = str
parsedElement = ""
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let entity = NSEntityDescription.entityForName("Calendar", inManagedObjectContext:managedContext)
let datum = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
datum.setValue(currentEvent.eventDates, forKey: "date")
do {
try managedContext.save()
//5
dates.append(datum)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
}
}
答案 0 :(得分:2)
从漫长的聊天中可以看出,问题是dates
已初始化并尝试在viewDidLoad()
中进行访问。但是,它还没有填充,就像在XML解析方法中那样。
为了使这个循环更加安全崩溃
for i in 0...2 {
let currentDates = dates[i]
let date2Convert = currentDates.valueForKey("date") as? String
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
let day = dateFormatter.dateFromString(date2Convert)
print(day)
}
被这个循环替换
dates.forEach { currentDate in
let date2Convert = currentDate.valueForKey("date") as? String
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
let day = dateFormatter.dateFromString(date2Convert)
print(day)
}
然后在解析结束后调用setupDates()
方法。