2015-07-21 2 views
1

Я новичок в быстром, и я пытаюсь понять его части. Я работал над приложением, где мне нужно хранить дату, и я просто не могу понять это.Хранение NSDate в данных ядра (быстро)

Любой вход будет отличным.

код на сегодняшний день магазин

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, чтобы добавить дату к пользователю в качестве атрибута. Подумайте об этом и следуйте тому, что рекомендует Мартин 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

Впервые вы должны создать атрибут с датой. Вот код

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()