将`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`不起作用的主要内容,如果未能解决你的问题,请参考以下文章

核心数据保存到数据库不起作用

ios Core Data - 我的保存按钮不起作用

Coredata,级联删除不起作用

核心数据:后台更新 NSManagedObjectContext 在保存时不起作用

如何在 Swift 中将字符串数组保存到 Core Data

CoreData 获取请求 NSPredicate 不起作用