ios - 使用 FMDB 和 NSDictionary 向 SQLite 数据库添加 NULL 值

标签 ios sqlite fmdb

我遇到了一个陷阱 22。我正在使用 FMDB 的奇特 withParameterDictionary 方法将数据插入到我的 SQLite 数据库中,如下所示:

NSDictionary *aircraftDict = [NSDictionary dictionaryWithObjectsAndKeys:
                              self.aircraftIdTextField.text, @"aircraft_id",
                              self.makeModelTextField.text, @"make_model",
                              self.categoryClassTextField.text, @"category_class",                                  
                              @YES, @"updated_flag",                                 
                              nil];

NSString *addAircraftQuery = @"INSERT INTO aircrafts (aircraft_id, make_model, category_class, updated_flag) VALUES (:aircraft_id, :make_model, :category_class, :updated_flag)";

[db executeUpdate:addAircraftQuery withParameterDictionary:aircraftDict];

问题是,当其中一个文本字段为空时,它会截断 NSDictionary,因为 nil 值告诉字典它已到达其值列表的末尾。

我可以通过确保字典中的每个值都有一个空白对象(例如像字符串 @"")来很好地解决这个问题。

但是随后我的值作为“空”值而不是 NULL 到达我的 SQLite 数据库。这可能不是什么大问题,但我听说使用 NULL 会占用更少的数据库空间。

如何在不过早截断 NSDictionary 的情况下将 NULL 插入到我的数据库中?

最佳答案

也花了一段时间研究这个。我的解决方案(使用 Swift,但 Objective C 应该相同)是使用 NSNull 而不是 nil

关于ios - 使用 FMDB 和 NSDictionary 向 SQLite 数据库添加 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18218467/

相关文章:

ios - 将两个(并排)按钮作为 UITextField 的右侧覆盖

ios - Swift 初始化器之谜

ios - FMDB:更新时数据库被锁定

ios - 用于 iOS 开发的 SQLite 的数据库包装器库

ios - 如何使用 swift avfoundation 设置前置摄像头变焦

ios - 安装RestKit时出现问题-RKURL未声明的标识符

android - 从 SQLite 迁移到 Android Room Persistence Library

android - 如何在android中用新的数据库文件替换现有的sqlite数据库文件

ios - 使用事务优化 SQLite