将NSDate存储在核心数据中(swift)

时间:2015-07-21 16:52:51

标签: ios swift core-data nsdate nsmanagedobject

我是swift的新手,我正在努力了解它的一部分。我一直在开发一个需要存储日期的应用程序,而我无法理解它。

任何输入都会很棒。

存储日期的代码

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context: NSManagedObjectContext = appDel.managedObjectContext!
// Users = Entity in core data
var newuser = NSEntityDescription.insertNewObjectForEntityForName("Users",inManagedObjectContext: context) as! NSManagedObject
// datetostore = attribute of type date
newuser.setValue(NSDate(), forKey: "datetostore")
context.save(nil)

从Core Data获取存储数据的代码

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context: NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Users")
var results: NSArray = context.executeFetchRequest(request, error: nil)!
var end: AnyObject = results[0]
var end2 = end as! NSObject
var end3 = end2 as! NSDate

请注意:我知道结尾不起作用,因为那是我收到错误的地方。

2 个答案:

答案 0 :(得分:1)

首先,您应该让Xcode生成NSManagedObject子类,这将允许更强的类型和更简洁的代码。它将生成一个具有属性User的类datetostore

我建议免除datetostore等愚蠢的名字。这显然是一个约会,显然你正在存储它。因此,date就足够了。

最后,您的代码似乎认为用户与日期相同,即使您自己刚刚调用setValueForKey将日期作为属性添加到用户。想一想,按照Martin R推荐的那样。

没有NSManagedObject子类(不推荐):

 let aDate = user.valueForKey("date")

使用子类:使用正确的类型获取实体。

let result = context.executeFetchRequest(request, error:nil) as! [User]
// check for empty array, then
let user = result.first
let aDate = user.date

答案 1 :(得分:1)

第一次使用Date创建属性。 这是代码

let date = Date()
let dateformatter = DateFormatter()
dateformatter.format = "dd-MM-yyyy hh-mm-ss"
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.persistentContainer.viewContext

let user = NSEntityDescription.insertNewObject(forEntityName: "Example", into: context)
user.setValue(date, forKey: "date")

appDelegate.saveContext()