Я кодировал приложение, которое использует базу данных sqlite, которая поставляется с Xcode. Это хорошо работает на ма c, но когда я выбираю iPhone в качестве симулятора, приложение (на iPhone) не читает данные базы данных. Нужно ли кодировать доступ к базе данных sqlite иначе, чем к ней на ма c?
Вот моя функция для получения данных из базы данных, которая используется в представлении выбора. Это окно выбора не заполняется, когда я использую iPhone (связанный с компьютером через USB). Однако он заполняется, когда я запускаю любой из перечисленных симуляторов
struct Gender {
let gender:String
}
var genderCode = [Gender]()
func readGenderCode(){
//database setup
let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) .appendingPathComponent("OTC.sqlite")
//opening the OTC database
if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
print("error opening database")
}
//get data by query
let queryString = "SELECT gender from gender"
//statement pointer
var stmt2:OpaquePointer?
//preparing the query
if sqlite3_prepare(db, queryString, -1, &stmt2, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing read: \(errmsg)")
return
}
//go through gender table records
while(sqlite3_step(stmt2) == SQLITE_ROW) {
let gc = String(cString: sqlite3_column_text(stmt2,0))
//populate the array
genderCode.append(Gender(gender: String(describing: gc)))
}
}