我正在开发一款需要存储服药时间的应用。通过通知操作,我想在CoreData
中存储服用此药的时间。这可以像这样使用它吗?我的实体:
通知行动:
func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) {
if identifier == "remindLater" {
print("remindLater")
notification.fireDate = NSDate().dateByAddingTimeInterval(60)
UIApplication.sharedApplication().scheduleLocalNotification(notification)
} else if identifier == "takePill" {
print("Pill taken")
do {
let results = try managedObjectContext.executeFetchRequest(fetchRequest)
for medicine in results {
medicine.timeArray.append(NSDate())
}
} catch let error as NSError {
print(error.userInfo)
}
}
completionHandler()
}
答案 0 :(得分:1)
通过将其归档到NSData,可以在Core Data Transformable属性中存储符合NSCoding的任何类型。 因此,您可以将数组存储在Core Data中。
以下是在myEntity
为NSManagedObject
引用的核心数据实体的属性中归档数据的示例。
myEntity.setValue(NSKeyedArchiver.archivedDataWithRootObject(timeArray),
forKey: "timeArray")
一旦您拥有对托管对象的引用(例如从提取请求返回的对象),就可以使用相应的归档操作来检索数据。
let myTimeArray = NSKeyedUnarchiver.unarchiveObjectWithData(
myNSManagedObject.valueForKey("timeArray") as! NSData)