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

Cli*_*rum 4 sqlite fmdb ios

我遇到了一些问题 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];
Run Code Online (Sandbox Code Playgroud)

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

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

但是随后我的值作为“空白”值而不是NULL. 这可能没什么大不了的,但我听说 usingNULL会占用更少的数据库空间。

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

小智 5

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