所以我成功地将CoreData实现到我的Xcode项目中,并且所有内容似乎都正确链接在一起。我目前在视图控制器中使用的代码.swift是:
func runTests(){
let appDel : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let contxt : NSManagedObjectContext = appDel.managedObjectContext!
let en = NSEntityDescription.entityForName( "SavedData", inManagedObjectContext: contxt )
var newItem = data( entity: en!, insertIntoManagedObjectContext: contxt )
newItem.test = "test123"
var error : NSError? = nil
if !contxt.save(&error) {
NSLog("Unresolved error (error), (error!.userInfo)")
}
NSLog("CoreData:(newItem)")
}
在我的 knoData 中.swift:
import Foundation
import UIKit
import CoreData
@objc( data )
class data: NSManagedObject {
@NSManaged var test : String
}
当应用程序仍在运行时,当引用为"newItem.test"时,它将正确返回"test123",但是当我尝试再次运行该应用程序并引用它时,它会返回 nil,直到再次设置。我不是救了吧?是否未引用类?有人请帮忙。
编辑:我上面的代码没有返回任何错误。当我在没有引用 knoData.xcdatamodeld 中的类数据的情况下运行应用程序时,它会在 NSLog 中返回此数据
CoreData:<NSManagedObject: 0x79eb49d0> (entity: SavedData; id: 0x79eb6af0 <x-coredata://C40AE8E5-A846-4AC4-9A27-2FB109D6FE49/SavedData/p181> ; data: {
test = test123; // it is only returning test123 because it was set previously, but when I run the app again and try to get the value without setting it again, it returns nil
})
但是当我引用 knoData.xcdatamodeld 中的类数据时,它会返回以下内容:
CoreData:
您需要从数据库中获取数据:
let fetchRequest = NSFetchRequest(entityName:"SavedData")
var error: NSError?
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [data]?
if let resultsArray = fetchedResults {
if resultsArray.count > 0 {
let newItem = resultsArray[0] as data
println("Saved data is (newItem.test)")
} else {
println("No results from fetch request.")
}
}
我假设您的实体名称是"保存数据"是"数据"类。