【问题标题】:How to save and fetch one Object from Database in Swift?如何在 Swift 中从数据库中保存和获取一个对象?
【发布时间】:2014-11-18 12:03:06
【问题描述】:

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

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


    }

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

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

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

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
    }

谢谢。

【问题讨论】:

    标签: ios database core-data swift


    【解决方案1】:

    你可以这样做。

    //只存储一个对象,

    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
        }
    

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多