将`Date`保存到`CoreData`不起作用

时间:2015-07-13 15:35:19

标签: ios swift core-data uitextfield nsdate

我正在尝试将Date保存到文本字段中并将其保存到CoreData中。我已经设置了文本字段,并且能够使用日期选择器与NSDateFormatter一起使用,但我无法将其保存到文本字段中的CoreData中。

3 个答案:

答案 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的答案链接。因为那里可能有些不对劲。

这里是https://stackoverflow.com/a/26025022/5113355