데이터 저장을 위해 sqlite를 사용하려고합니다.Swift2.3 : "치명적인 오류 : 인덱스가 범위를 벗어났습니다"와 sqlite 배열 오류
그리고 난 그냥 기능 코드
if segmentControl.selectedIndex == 0 {
let recipe = recipes[indexPath.row]
let aux:AnyObject = data[indexPath.row]
let table_recipeName = aux["recipeName"]
cell.nameLabel.text = table_recipeName as? String
let table_recipeType = aux["recipeType"]
cell.typeLabel.text = table_recipeType as? String
let table_recipeImage = aux["recipeImage"]
cell.thumbnailImageView.image = UIImage(named: table_recipeImage as! String)
let table_recipeIsFavor = aux["recipeIsFavor"]
cell.favorIconImageView.hidden = !recipe.isFavor
let table_recipeUserPhoto = aux["recipeUserPhoto"]
cell.userPhoto.image = UIImage(named: table_recipeUserPhoto as! String)
let table_recipeUserName = aux["recipeUserName"]
cell.userName.text = table_recipeUserName as? String
}
와 sqlite가 기능 이상 chenge 여기
//**********************SQLite********************************//
var statement = COpaquePointer()
var data: [[String: AnyObject]] = []
func loadData() {
let db_path = "/Users/huangpinquan/Desktop/Recipes/Recipes/Recipes.sqlite"
var db = COpaquePointer()
let status = sqlite3_open(db_path,&db)
if (status == SQLITE_OK) {
print("Open the sqlite success!\n")
}else {
print("Open the sqlite failed!\n")
}
let query_stmt = "SELECT * FROM recipe WHERE type:'麵食' "
//let query_stmt = "SELECT * FROM recipe"
if(sqlite3_prepare_v2(db , query_stmt, -1, &statement, nil) == SQLITE_OK) {
//self.data.removeAllObjects()
while (sqlite3_step(statement) == SQLITE_ROW) {
var recipeArray: [String: AnyObject] = [:]
let recipeName = sqlite3_column_text(statement, 0)
let recipe_name = String.fromCString(UnsafePointer<CChar>(recipeName)) ?? ""
let recipeType = sqlite3_column_text(statement, 1)
//....just like "statement, 0"
let recipeImage = sqlite3_column_text(statement, 2)
//....
let recipeIsFavor = sqlite3_column_int(statement, 3)
//....
let recipeUserPhoto = sqlite3_column_text(statement, 4)
//....
let recipeUserName = sqlite3_column_text(statement, 5)
//....
recipeArray["recipeName"] = recipe_name
recipeArray["recipeType"] = recipe_type
recipeArray["recipeImage"] = recipe_image
recipeArray["recipIsFavor"] = recipe_isFavor
recipeArray["recipeUserPhoto"] = recipe_userPhoto
recipeArray["recipeUserName"] = recipe_userName
data.append(recipeArray)
}
sqlite3_finalize(statement)
}else {
print("read the sqlite data failed")
}
}
때 "FUNC loadData"
let query_stmt = "SELECT * FROM recipe WHERE type:'麵食' "
을이 같은 코드 오류가 발생합니다
,210fatal error: Index out of range
그러나이 같은 코드, 그것은 오류
let query_stmt = "SELECT * FROM recipe"
당신이 원하는 경우, 내 전체 코드의이없는 경우.
https://gist.github.com/anonymous/79eb4b2506889929cfe92dfcab3731c4
이 오류를 해결하기 위해 어떻게해야합니까?
어디서이 오류가 발생합니까? 어느 선 에서요? –
FYI - 절대로 SELECT * ...를 사용하지 마십시오. 선택할 열을 명시 적으로 나열하십시오. – rmaddy
오류는 "let aux : anyObject = data [indexPath.row]" – HarryHuang