Я заполняю основной объект данных программным путем.Безумие во время создания объекта основных данных
У меня есть массив как это:
NSArray *formats = @[
@"6 x 5",
@"5.3 x 4.3",
@"4 x 3",
@"5 x 3.5",
...
Теперь я перечислю, что и заполнить объект
for (int i=0; i<[formats count]; i++) {
NSString *format = formats[i];
Format *oneFormat = [Format formatWithString:format inManagedObjectContext:managedObjectContext];
// ... bla bla
}
Внутри класса Формат У меня есть
+ (Format *)formatWithString:(NSString *)string inManagedObjectContext:(NSManagedObjectContext *)context
{
Format *aFormat = nil;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:NSStringFromClass([self class])
inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(name == %@)", string];
Это проблема , В одном месте внутри цикла for
У меня
format = @"5.3 x 4.3"
Затем эта линия выполнена
Format *oneFormat = [Format formatWithString:format inManagedObjectContext:managedObjectContext];
в теории, format = @"5.3 x 4.3"
передается Format formatWithString
.
Проблема в том, что Format formatWithString
получает следующую строку: @"4 x 3.5"
.
Что ??? Метод называется @"5.3 x 4.3"
и принимает @"4 x 3.5"
?
И вот удивительная часть. Если я po predicate
я вижу
name == "5.3 x 4.3 cm"
Это правильное значение. Но когда запись сохранена, неправильное значение будет сохранено.
Этот @"4 x 3.5"
был старым форматом, который я использовал для кода, давным-давно. Это была опечатка. Я удалил все упоминания этого формата из своего кода. Я проверил это 10 раз. Нет @"4 x 3.5"
.
Я удалил все полученные данные. Каждый раз, когда я создаю базу данных, он содержит эту запись @"4 x 3.5"
, которой не должно быть.
Есть ли скрытый кеш данных или какое-то место, которое я могу очистить, чтобы сгенерировать это правильно? Как можно вызвать метод с одним значением и получить другой?
# 2 дайте мне идею изменить имена переменных внутри класса Format и решить эту проблему. Благодарю. – SpaceDog