Dan*_*ieu 4 storage core-data ios swift2 xcode7-beta5
我试图简单地保存一条记录,然后取出它,但我认为我在做错了,因为我的记录没有保存.输出窗口只显示一个空数组.
我在Xcode 7 beta 5中使用了锅炉板 AppDelegate CoreData堆栈.[参见这里的要点]
实体
模型
import Foundation
import CoreData
// @func(Person) edit: removed
class Person: NSManagedObject {
@NSManaged var firstName: String?
@NSManaged var lastName: String?
}
Run Code Online (Sandbox Code Playgroud)
查看控制器
import UIKit
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
seedPerson()
fetch()
}
func seedPerson() {
let managedContext = AppDelegate().managedObjectContext
let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext)
let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
// add our data
person.setValue("Dan", forKey: "firstName")
person.setValue("Beaulieu", forKey: "lastName")
// save it
do {
try AppDelegate().managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
func fetch() {
let moc = AppDelegate().managedObjectContext
let personFetch = NSFetchRequest(entityName: "Person")
do {
let fetchedPerson = try moc.executeFetchRequest(personFetch) as! [Person]
print(fetchedPerson.first!.firstName)
} catch {
fatalError("Failed to fetch person: \(error)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要返回的是我在数据存储中的第一个名字,但是我不认为我的记录被保存了,这就是为什么我得到的是一个空数组.
所以我的具体问题是,如何使用锅炉板核心数据堆栈进行保存?
问题是我正在创建一个新的managedObjectContext实例并试图保存到它,这显然是行不通的,因为我正在处理我在方法顶部创建的托管上下文.
func seedPerson() {
let managedContext = AppDelegate().managedObjectContext
//let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext)
//let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
let person = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: managedContext)
// add our data
person.setValue("Dan", forKey: "firstName")
person.setValue("Beaulieu", forKey: "lastName")
// save it
do {
// this was the problem ///////////////
try managedContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
Run Code Online (Sandbox Code Playgroud)
我上传了一个关于如何在swift 2中设置核心数据的视频教程:https://www.youtube.com/watch?v = WcQkBYu86h8
| 归档时间: |
|
| 查看次数: |
4214 次 |
| 最近记录: |