func selectSiteData(clientName: String) -> [TrustedSiteData]{ //데이터 조회
let selectQuery = "select * from sitetable where clientname like '%\(clientName)%'"
var statement: OpaquePointer? = nil
var result: [TrustedSiteData] = []
if sqlite3_prepare_v2(self.db, selectQuery, -1, &statement, nil) == SQLITE_OK {
while (sqlite3_step(statement) == SQLITE_ROW){
let result1 = Int(sqlite3_column_int(statement, 0)) //sequence
let result2 = String(cString: sqlite3_column_text(statement, 1)) //clientKey
let result3 = String(cString: sqlite3_column_text(statement, 2)) //clientName
result.append(TrustedSiteData(sequence: result1, clientKey: String(result2), clientName: String(result3)))
}
} else {
let errorMessage = String(cString: sqlite3_errmsg(db))
print("\nQuery is not prepared \(errorMessage)")
}
sqlite3_finalize(statement)
return result
}
진짜 진짜 간단하지만 놓치기 쉬운 에러였습니다. 내가 갖고 있는 데이터는 분명히! 기필코 2개 이상인데 아무리 select문을 갈겨도 하나밖에 찍히지 않고 계신가요? 그렇다면 지금 코드를 잘 들여다보세요... 아마 if(sqlite3_step(statement) ==SQLITE_ROW)로 코드가 적혀있을것입니다. if를 while로 간단하게 바꿔주면 애타게 보고싶었던 데이터들이 튀어나올거에요...(저는 이거때문에 2시간동안 고생했어요..)
'iOS Swift > error 해결 방법' 카테고리의 다른 글
Initializer for conditional binding must have Optional type, not 'String' (1) | 2022.12.22 |
---|