我是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
请注意:我知道结尾不起作用,因为那是我收到错误的地方。
答案 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()