Я столкнулся с ловушкой 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
сообщает словарю, что оно находится в конце списка значений.
Я могу прекрасно обойти эту проблему, убедившись, что у меня есть пустой объект для каждого значения в словаре (например, как строка @""
).
Но затем мои значения поступают в мою базу данных SQLite как «пустое» значение вместо NULL
. Это может не иметь большого значения, но я слышал, что использование NULL
займет меньше места в базе данных.
Как я могу вставить NULL
в мою базу данных без преждевременного усечения моего NSDictionary?