gpt4 book ai didi

ios - 添加之前检查值是否在 sqlite 数据库中

转载 作者:行者123 更新时间:2023-11-30 14:16:26 25 4
gpt4 key购买 nike

我正在尝试将一些值从 .csv 文件预加载到数据库中,但如果它们已经存在,则跳过它们。我能够成功解析 csv 文件,然后使用以下函数来检查它们是否存在于数据库中:

func GetPreloadedDriverExists(manufacturer: String, model: String, size: Float, impedance: Int) -> Bool
{
//1
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!

//2
let fetchRequest = NSFetchRequest(entityName:"Drivers")
fetchRequest.propertiesToFetch = ["size"]
fetchRequest.returnsObjectsAsFaults = false
fetchRequest.predicate = NSPredicate(format: "(manufacturer MATCHES %@) AND (model MATCHES %@) AND (#size == %@) AND (impedance == %@) AND (isRemovable == FALSE)", "\(manufacturer)", "\(model)", "\(size)", "\(impedance)")

//3
var error: NSError?

let fetchedResults:NSArray = (managedContext.executeFetchRequest(fetchRequest, error: &error))!

return fetchedResults.count == 0 ? false : true
}

第一次返回 false,正如我对所有条目所期望的那样,但是当我在设备上打开 sqlite 文件时,它是空白的。

这是我用来将条目添加到数据库中的循环。

if let managedObjectContext = self.managedObjectContext {
for item in items {
// Check if driver already exists in database, if not add it.
if(!GetPreloadedDriverExists(item.manufacturer, model: item.model, size: (item.size as NSString).floatValue, impedance: (item.impedance as NSString).integerValue))
{
println("Value does not exist")
let menuItem = NSEntityDescription.insertNewObjectForEntityForName("Drivers", inManagedObjectContext: managedObjectContext) as! Drivers
menuItem.manufacturer = item.manufacturer
menuItem.model = item.model
menuItem.size = (item.size as NSString).floatValue
menuItem.impedance = (item.impedance as NSString).integerValue

if managedObjectContext.save(&error) != true {
println("insert error: \(error!.localizedDescription)")
}
}
}
}

更新#1信息似乎保存在某处,但是当我从设备保存容器并查看包内容时,sqlite 文件中没有我的信息,但是当我在调试器中运行它时,它会显示所有信息就在那里。

感谢您的帮助和任何反馈。

最佳答案

我找到了答案 here 。它不会直接将其填充到 sqlite 文件中,而是默认使用预写日志记录。当我用数据库浏览器打开它时,所有数据都被合并并显示在 sqlite 文件中。

然后我找到了如何禁用预写日志记录 here ,它解决了我的问题并自动填充 .sqlite 文件。

关于ios - 添加之前检查值是否在 sqlite 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121954/

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