将`Date`保存到`CoreData`不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将`Date`保存到`CoreData`不起作用相关的知识,希望对你有一定的参考价值。
我正在尝试将日期保存到文本字段中并将其保存到CoreData中。我已经设置了文本字段,并且能够使用日期选择器与NSDateFormatter一起使用,但我无法将其保存到文本字段中进入CoreData。
答案
extension NSDate{
var stringValue: String{
return self.toString()
}
func toString() -> String {
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let str = formatter.stringFromDate(self)
return str
}
}
extension String{
var dateValue: NSDate?{
return self.toDate()
}
func toDate() -> NSDate? {
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
if let date = formatter.dateFromString(self) {
return date
}else{
// if format failed, Put some code here
return nil // an example
}
}
}
在你的类或其他swift文件之前添加这个,然后将textFieldDDate.NSDate = ddate
更改为:
textFieldDDate.text = ddate.stringValue
你只能在UITextField中使用text(String!),在newItem.ddate中也只能使用NSDate。
将newItem.ddate = textFieldDDate.text
改为
newItem.ddate = textFieldDDate.text.dateValue
另一答案
我看到var ddate = data.valueForKey("ddate")
,我猜它是NSDate的类型?也许你需要把它改成String,它不能只是使用as!(?) String
,如果我是对的,你需要使用我的扩展代码NSDate {}来改变它。
另一答案
我检查了你的代码,只是找到一些行可能是保存数据到coreData:
if segue.identifier == "update" {
var selectedItem: NSManagedObject = myDivelog[self.tableView.indexPathForSelectedRow()!.row] as! NSManagedObject
let ADLVC: AddDiveLogViewController = segue.destinationViewController as! AddDiveLogViewController
ADLVC.divenumber = selectedItem.valueForKey("divenumber") as! String
ADLVC.ddate = selectedItem.valueForKey("ddate") as! NSDate
ADLVC.divelocation = selectedItem.valueForKey("divelocation") as! String
ADLVC.existingItem = selectedItem
}
我对吗?我得到了如何为您保存数据到CoreData的答案链接。因为那里可能有些不对劲。
这是https://stackoverflow.com/a/26025022/5113355
以上是关于将`Date`保存到`CoreData`不起作用的主要内容,如果未能解决你的问题,请参考以下文章
核心数据:后台更新 NSManagedObjectContext 在保存时不起作用