почему вставка BLOB-объектов не удалась? - PullRequest
0 голосов
/ 24 мая 2019

Я хочу поместить строковый массив в мою базу данных, используя тип данных blob.Но вставка не удалась.Вот мой код вставки в базу данных.

    do {
        let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
        let data: NSData = try NSKeyedArchiver.archivedData(withRootObject: powerRanking, requiringSecureCoding: false) as NSData
        let b = data.bytes
        if sqlite3_bind_blob(stmnt, 2, b, Int32(data.count), SQLITE_TRANSIENT) != SQLITE_OK {
            let errmsg = String(cString: sqlite3_errmsg(db)!)
            print("failure binding name: \(errmsg)")
            return
        }
    } catch {
        print("Not done")
    }

while(sqlite3_step(stmt) == SQLITE_ROW){
            let id = sqlite3_column_int(stmt, 0)
            let name = String(cString: sqlite3_column_text(stmt, 1))
            var powerrank = sqlite3_column_blob(stmt, 2)
            let blobBytesLength: Int = Int(sqlite3_column_bytes(stmt, 2))
            let blobData = Data(bytes: &powerrank, count: blobBytesLength)
            print(blobData)
            do {
                let myArrayFromDB = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(blobData) as? [String]
                print(myArrayFromDB as Any)
            }catch {

            }
        }

Будет полезно, если кто-нибудь даст ответ в FMDB и sqlite3.При попытке чтения данных из базы данных массив равен нулю.

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