Есть ли способ переупорядочить столбцы в SQLite-manager? - PullRequest
1 голос
/ 10 августа 2011

У меня есть .csv-документ с большим количеством данных.Он имеет 71 разных столбцов.

Теперь я хочу импортировать эти данные в Core Data.Но когда я создаю атрибуты в xcdatamodel, атрибуты сортируются по его имени, а не в том порядке, в котором я хочу их видеть.Таким образом, при создании .sqlite-файла столбцы расположены в неправильном порядке.Я пытался упорядочить их в SQLite-manager, но при повторном открытии .sqlite столбцы в том же порядке, что и до изменения.

Есть ли способ переупорядочить столбцы в SQLite-manager?

1 Ответ

1 голос
/ 10 августа 2011

Ну, 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.Если вы используете базовые данные, это путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...