我正在尝试将Date保存到文本字段中并将其保存到CoreData中。我已经设置了文本字段,并且能够使用日期选择器与NSDateFormatter一起使用,但我无法将其保存到文本字段中的CoreData中。
答案 0 :(得分:1)
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
答案 1 :(得分:1)
我看到var ddate = data.valueForKey("ddate")
,我猜它是NSDate的类型?也许您需要将其更改为String,它不能只使用as!(?) String
,如果我是对的,您需要使用我的扩展名NSDate {} 的代码来更改它。
答案 2 :(得分:1)
我检查了你的代码,只是找到一些行,也许是将数据保存到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的答案链接。因为那里可能有些不对劲。