Ну, 71 столбец это много.Поскольку вы используете Core Data, я бы посоветовал немного денормализовать.Базовые данные не являются табличной базой данных.Тем не менее, я бы посоветовал отслеживать текущий столбец и хранить данные в массиве.Затем вы разделяете данные на NSManagedObjects по мере необходимости.
РЕДАКТИРОВАТЬ:
Давайте представим, что ваша база данных sqlite имеет три столбца в следующем порядке: firstName
, lastName
, middleInitial
.Теперь представьте, что ваш CSV-файл содержит их в другом порядке, например lastName
, middleInitial
, firstName
.Вы могли бы изменить порядок файла CSV или файла sqlite, но, поскольку вы используете Core Data, вы можете сделать это другим способом.
У вас будет объект со всемиваши свойства.В моем примере это сущность «Персона».Итак, мы продолжаем и создаем экземпляр этой сущности Person.
Person *newPerson = [[Person alloc] initWithEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:context] insertIntoManagedObjectContext:context];
Теперь вам нужно сохранить ссылку на этот экземпляр Person
, чтобы вы могли получить к нему доступ при анализе вашего CSV.Я рекомендую библиотеку Dave DeLong CHCSVParser .По сути, он позволяет анализировать файлы CSV на основе событий.
Когда вы нажимаете новое поле, проверьте, какой это номер поля.Вы можете сделать это, сохраняя переменную currentField, сбрасывая ее в ноль, когда вы нажимаете новую строку, и увеличивая все поля.Теперь, когда вы нажмете поле, если число равно 0 или первое поле, вы установите newPerson.lastName
.Если это второе поле, вы назначаете newPerson.middleInitial
.И, если вы нажмете на третье поле, вы установите newPerson.firstName
.Идея состоит в том, что вы можете назначать постоянные свойства, не касаясь базы данных sqlite.Если вы используете базовые данные, это путь.