gpt4 book ai didi

ios - 如何在 Swift 中从数据库中保存和获取一个对象?

转载 作者:搜寻专家 更新时间:2023-11-01 05:54:22 24 4
gpt4 key购买 nike

我有一个方法可以将对象保存到数据库中。按照逻辑,只要有网络,它就会从服务器下载保存对象。方法如下。

func saveConfiguration (config : ConfigDao){

let entity = NSEntityDescription.entityForName("AppConfig", inManagedObjectContext:self.del.managedObjectContext!)

let configurationContext = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: self.del.managedObjectContext!) as AppConfig

configurationContext.categoriesVer = Int32(config.categoriesVer)
configurationContext.fireBallIp = config.fireBallIP
configurationContext.fireBallPort = Int32(config.fireBallPort)
configurationContext.isAppManagerAvailable = config.isAppManagerAvailable
configurationContext.isFireBallAvailable = config.isFireballAvailable
configurationContext.timePerQuestion = config.timePerQuestion


}

问题是这会添加所有对象,但不会替换它,所以我的第一个查询是

“如何在数据库中只添加一个对象并在下一个对象到来时替换?”

我也想检索相同的对象,唯一的一个对象,通常在数组中,我确实获取了最后一个索引,但我如何只保存一个并在数据库中获取相同的对象。

func fetchAppConfig() -> AppConfig {

var fetchRequest = NSFetchRequest (entityName: "AppConfig")

var error : NSError?
let fetchResults = del.managedObjectContext?.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]

if error != nil {
println ("Error \(error)")
}

return fetchResults
}

谢谢。

最佳答案

您可以按照以下方式进行。

//只存储一个对象,

func saveConfiguration (config : ConfigDao){

let entity = NSEntityDescription.entityForName("AppConfig", inManagedObjectContext:self.del.managedObjectContext!)
var fetchRequest = NSFetchRequest (entityName: "AppConfig")

if let fetchResults = del.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [AppConfig] {
for ob: AppConfig in fetchResults
{
println("Delete object,,, ")
self.del.managedObjectContext?.deleteObject(ob as AppConfig)
}
self.del.saveContext()
}

let configurationContext = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: self.del.managedObjectContext!) as AppConfig

configurationContext.categoriesVer = Int32(config.categoriesVer)
configurationContext.fireBallIp = config.fireBallIP
configurationContext.fireBallPort = Int32(config.fireBallPort)
configurationContext.isAppManagerAvailable = config.isAppManagerAvailable
configurationContext.isFireBallAvailable = config.isFireballAvailable
configurationContext.timePerQuestion = config.timePerQuestion

del.saveContext()

}// end of the

//在零索引处获取对象。这将只有一个,您仍然可以使用 0 索引来确定。

func fetchAppConfig() -> AppConfig {

var appConfig:AppConfig = AppConfig()

var fetchRequest = NSFetchRequest (entityName: "AppConfig")

var error : NSError?
if let fetchResults = del.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [AppConfig] {

if error != nil {
println ("Error \(error)")
}
appConfig = fetchResults[0]
}

return appConfig
}

关于ios - 如何在 Swift 中从数据库中保存和获取一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26993915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com