gpt4 book ai didi

ios - Swift/如何通过valueForKey获取核心数据项

转载 作者:行者123 更新时间:2023-11-28 12:52:27 25 4
gpt4 key购买 nike

我有以下代码将多个日期作为 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] 代码抛出以下异常:

enter image description here

日期已正确保存在核心数据中。如果我打印出来,它们是正确的。我错过了什么?非常感谢您的帮助。

按要求:这就是用日期字符串填充核心数据的方式。

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)")
}
}
}
}

最佳答案

从冗长的聊天中可以看出,问题是 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()方法。

关于ios - Swift/如何通过valueForKey获取核心数据项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36061570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com