2015-07-21 376 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()