Ответ 1
Сначала создайте файл "Meditation.swift" в Xcode с помощью "Редактор → Создать NSManagedObject Subclass... ". Сгенерированный файл должен выглядеть как
import Foundation
import CoreData
class Meditation: NSManagedObject {
@NSManaged var length: NSNumber
@NSManaged var warmup: NSNumber
@NSManaged var cooldown: NSNumber
@NSManaged var date: NSDate
}
Теперь вы можете использовать свойства непосредственно вместо кодирования по значению ключа и создайте объект как
let meditation = NSEntityDescription.insertNewObjectForEntityForName("Meditation", inManagedObjectContext: managedObjectContext) as Meditation
meditation.length = ...
meditation.warmup = ...
meditation.cooldown = ...
meditation.date = NSDate()
var error : NSError?
if !managedObjectContext.save(&error) {
println("save failed: \(error?.localizedDescription)")
}
При извлечении объекта произведите результат
executeFetchRequest()
до [Meditation]
:
let request = NSFetchRequest(entityName: "Meditation")
var error : NSError?
let result = managedObjectContext.executeFetchRequest(request, error: &error)
if let objects = result as? [Meditation] {
for meditation in objects {
println(meditation.length)
println(meditation.date)
// ...
}
} else {
println("fetch failed: \(error?.localizedDescription)")
}
Наконец, чтобы получить только последний объект, добавьте дескриптор сортировки в сортировать результаты по дате в порядке убывания и ограничивать число результатов одним:
let request = NSFetchRequest(entityName: "Meditation")
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
request.fetchLimit = 1
// ...
Затем массив objects
содержит не более одного объекта, который является самым последним.