2015-07-21 158 views
1

我是新来的swift,我试图理解它的一部分。我一直在研究一个应用程序,我需要存储一个日期,但我无法弄清楚。在核心数据中存储NSDate(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) 

代码从核心数据存储的数据

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 

请注意:我知道结局并没有真正的工作,因为这是我得到一个错误。

+0

提示:如果您查找的setValue的'文档(_:forKey:)'那么你会发现相应的方法来检索* *从对象的值。 –

回答

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

您第一次应该使用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()