在核心数据中存储NSDate(swift)
问题描述:
我是新来的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
请注意:我知道结局并没有真正的工作,因为这是我得到一个错误。
答
首先,你应该让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
答
您第一次应该使用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()
提示:如果您查找的setValue的'文档(_:forKey:)'那么你会发现相应的方法来检索* *从对象的值。 –