Как импортировать файл .sqlite3 / .sqlite в приложение ios?

У меня был файл Excel.

Я преобразовал этот файл в формат .csv и импортировал этот файл в базу и преобразовал его в файл .sqlite.

Поэтому вопрос в том, что:

Есть ли способ импортировать его в приложение ios и манипулировать данными.

Есть ли способ использовать его как основные данные или импортировать этот файл в основные данные.

Пожалуйста, направьте любой хороший учебник, желательно видео-учебник или какой-нибудь другой хороший.

3 Solutions collect form web for “Как импортировать файл .sqlite3 / .sqlite в приложение ios?”

Вы можете использовать его непосредственно с библиотекой FMDB: https://github.com/ccgus/fmdb Другой вариант – импортировать этот файл в основные данные, но это немного сложно. Вы можете сделать это, если выполните следующие действия:

  1. Создайте пустую базу данных SQLite в своем приложении и запустите приложение в симуляторе.
  2. Откройте каталог симулятора на вашем компьютере и найдите файл базы данных SQLite.
  3. Просмотрите его с помощью инструмента командной строки SQLite или что-то вроде «инструментария SQLite Data Browser» ( http://sqlitebrowser.sourceforge.net/ ).
  4. Импортируйте данные в этот файл базы данных без изменения структуры и данных в метаданных основных данных.
  5. Наконец, у вас есть файл базы данных SQLite, готовый для использования с основными данными. Итак, вы положили его в свой комплект приложений.
  6. При первом запуске приложения вы должны скопировать файл базы данных SQLite в соответствующий каталог (вы знаете, где вы должны поместить свой файл – вы уже нашли его в каталоге приложений для симулятора) перед настройкой стека данных ядра.

Это звучит немного сложно, но оно работает;)

Хорошая статья о доставке предварительно заполненных данных для основных данных: http://www.objc.io/issue-4/importing-large-data-sets-into-core-data.html

Обновить

Обратите внимание на обновленный ответ.

Есть ли способ импортировать его (SQLite) в приложение ios и управлять данными?

Вы можете импортировать файл sqlite в Xcode, просто добавив его в качестве ресурса с помощью «Добавить новый файл» … Однако у вас была бы ограниченная возможность использовать его совместно с Core Data (если только он не был создан с помощью Core Data). Можно просмотреть статью objc.io, упомянутую ранее, которая описывает, как работать с предварительно заполненными данными в проекте Xcode. Вот соответствующий раздел этой статьи.

NSFileManager* fileManager = [NSFileManager defaultManager]; NSError *error; if([fileManager fileExistsAtPath:self.storeURL.path]) { NSURL *storeDirectory = [self.storeURL URLByDeletingLastPathComponent]; NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:storeDirectory includingPropertiesForKeys:nil options:0 errorHandler:NULL]; NSString *storeName = [self.storeURL.lastPathComponent stringByDeletingPathExtension]; for (NSURL *url in enumerator) { if (![url.lastPathComponent hasPrefix:storeName]) continue; [fileManager removeItemAtURL:url error:&error]; } // handle error } NSString* bundleDbPath = [[NSBundle mainBundle] pathForResource:@"seed" ofType:@"sqlite"]; [fileManager copyItemAtPath:bundleDbPath toPath:self.storeURL.path error:&error]; NSDictionary *infoDictionary = [NSBundle mainBundle].infoDictionary; NSString* bundleVersion = [infoDictionary objectForKey:(NSString *)kCFBundleVersionKey]; NSString *seedVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"SeedVersion"]; if (![seedVersion isEqualToString:bundleVersion]) { // Copy the seed database } // ... after the import succeeded [[NSUserDefaults standardUserDefaults] setObject:bundleVersion forKey:@"SeedVersion"]; 

Предполагая, что нужно импортировать CSV-файл, а не Excel или SQLite … Поскольку это общий вопрос, вот простой парсер, который можно использовать для включения CSV-данных в проект Xcode.

 func parseCSV (contentsOfURL: NSURL, encoding: NSStringEncoding, error: NSErrorPointer) -> [(name:String, detail:String, price: String)]? { // Load the CSV file and parse it let delimiter = "," var items:[(name:String, detail:String, price: String)]? if let content = String(contentsOfURL: contentsOfURL, encoding: encoding, error: error) { items = [] let lines:[String] = content.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) as [String] for line in lines { var values:[String] = [] if line != "" { // For a line with double quotes // we use NSScanner to perform the parsing if line.rangeOfString("\"") != nil { var textToScan:String = line var value:NSString? var textScanner:NSScanner = NSScanner(string: textToScan) while textScanner.string != "" { if (textScanner.string as NSString).substringToIndex(1) == "\"" { textScanner.scanLocation += 1 textScanner.scanUpToString("\"", intoString: &value) textScanner.scanLocation += 1 } else { textScanner.scanUpToString(delimiter, intoString: &value) } // Store the value into the values array values.append(value as! String) // Retrieve the unscanned remainder of the string if textScanner.scanLocation < count(textScanner.string) { textToScan = (textScanner.string as NSString).substringFromIndex(textScanner.scanLocation + 1) } else { textToScan = "" } textScanner = NSScanner(string: textToScan) } // For a line without double quotes, we can simply separate the string // by using the delimiter (eg comma) } else { values = line.componentsSeparatedByString(delimiter) } // Put the values into the tuple and add it to the items array let item = (name: values[0], detail: values[1], price: values[2]) items?.append(item) } } } return items } 

( Источник статьи )

Другим вариантом является использование инструмента Core Data Editor, первоначально упомянутого в списке инструментов Ray W. Этот редактор графического интерфейса пытается облегчить обработку импорта данных CSV.

Есть ли способ использовать его как основные данные или импортировать этот файл в основные данные?

Таким образом, база данных SQLite не совпадает с базовыми данными (которая является постоянством графа объектов …). Я собирался войти в свою диатрибу здесь, но в разделе « Основные данные по данным Apple» сказано, что это лучше, чем я мог:

Как использовать существующую базу данных SQLite с базовыми данными?

Вы этого не сделаете. Хотя Core Data поддерживает SQLite как один из его постоянных типов хранилища, формат базы данных является конфиденциальным. Вы не можете создать базу данных SQLite с использованием собственного SQLite API и использовать ее напрямую с Core Data (а также не должны манипулировать существующим хранилищем данных SQL Server с использованием собственного SQLite API). Если у вас есть существующая база данных SQLite, вам необходимо импортировать ее в хранилище основных данных (см. «Эффективный импорт данных»).

Так что это официальный ответ. Все, что было предложено, это всего лишь способ обойти тот факт, что человек не должен этого делать.

Однако, учитывая, что у вас также есть файл CSV, у вас есть другие варианты. Раньше я создал считыватель файлов для изучения содержимого файла CSV с помощью устройства чтения потоков. Вот суть этого, однако у моего файла, вероятно, было другое форматирование, поэтому это, вероятно, нуждается в настройке. Вы также можете использовать любой объект, который читает содержимое файла. Например; на ум приходит гораздо более простая техника:

  1. Использовать initWithContentsOfFile в классе NSString
  2. Дает вам строку с CSV в памяти
  3. Итерировать строку для каждой строки
  4. Прокрутите линию с помощью запятых и сделайте что-нибудь с каждой частью данных

NSString * fileContents = [NSString stringWithContentsOfFile: @ "myfile.txt"]; NSArray * lines = [fileContents componentsSeparatedByString: @ "\ n"]; // цикл и разбиение каждой строки в массиве строк на полезные данные

NSString

Предположим, вы действительно хотите использовать SQLite в iOS, несмотря на предупреждения … Вы можете добавить библиотеку sqlite3 в свой проект. Полная информация о том, как использовать SQLite вместо Core Data. Один из многочисленных онлайн-руководств находится в AppCoda

Основы рассматриваются ( пример проекта ):

Сохранение …

 - (IBAction)saveInfo:(id)sender { // Prepare the query string. NSString *query = [NSString stringWithFormat:@"insert into peopleInfo values(null, '%@', '%@', %d)", self.txtFirstname.text, self.txtLastname.text, [self.txtAge.text intValue]]; // Execute the query. [self.dbManager executeQuery:query]; // If the query was successfully executed then pop the view controller. if (self.dbManager.affectedRows != 0) { NSLog(@"Query was executed successfully. Affected rows = %d", self.dbManager.affectedRows); // Pop the view controller. [self.navigationController popViewControllerAnimated:YES]; } else{ NSLog(@"Could not execute the query."); } } 

Редактирование …

 -(void)loadInfoToEdit{ // Create the query. NSString *query = [NSString stringWithFormat:@"select * from peopleInfo where peopleInfoID=%d", self.recordIDToEdit]; // Load the relevant data. NSArray *results = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:query]]; // Set the loaded data to the textfields. self.txtFirstname.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"firstname"]]; self.txtLastname.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"lastname"]]; self.txtAge.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"age"]]; } 

Удаление …

 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the selected record. // Find the record ID. int recordIDToDelete = [[[self.arrPeopleInfo objectAtIndex:indexPath.row] objectAtIndex:0] intValue]; // Prepare the query. NSString *query = [NSString stringWithFormat:@"delete from peopleInfo where peopleInfoID=%d", recordIDToDelete]; // Execute the query. [self.dbManager executeQuery:query]; // Reload the table view. [self loadData]; } } 

Re [2]: Просьба направить любой хороший учебник, желательно видео-учебник или какой-нибудь другой хороший .

Следующее руководство должно заполнить ваши потребности. Существует несколько учебных пособий по этой теме, на которых вы можете ознакомиться на веб-сайте http://www.lynda.com для подробного ознакомления с созданием приложения iOS с помощью SQLite (некоторые из них связаны с полным доступом, однако поиск Youtube по мере того, как они публикуют образцы фильмов, охватывающих эти темы, все время).

http://www.youtube.com/watch?v=bC3F8a4F_KE (см. 1:17 в видео)

Если у вас есть .sql-файл, вы просто импортируете его в свой проект, выбрав File – Add Files. Кроме того, имейте в виду, что если вы оставите свой .sql-файл в своем пакете, он будет доступен только для чтения. Итак, если вы не хотите, чтобы он был только для чтения, вы должны создать новую группу и поместить свой .sql.

  • Автономный кеш в приложении iOS sqlite3 становится поврежденным
  • добавить столбец в таблицу, если его не существует в sqlite
  • Как скопировать базу данных sqlite при запуске приложения в iOS?
  • Копирование таблицы в один бит на другой db
  • Как получить код ошибки, если sqlite3_prepare_v2 () возвращает один?
  • Есть ли эквивалент sqlite .dump в объекте-c?
  • Sqlite в проблемах памяти iOS
  • В чем разница между libsqlite3.dylib и libsqlite3.0.dylib?
  • Как вставить строку, содержащую символ в sqlite ios
  • sqlite 3 "Ошибка SQL" из памяти "(7)" objc
  • Как запросить внешнюю базу данных SQL - приложение для iPhone
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.