Чтение и запись изображений в БД SQLite для iPhone

В первый раз вы нажимаете myPromise на myList, пока оно еще не определено.

Вы можете исправить это, полностью исключив переменную myPromise.

var myList = [];

for (let i = 1; i <= 20; i++) {
    myList.push(new Promise(function(resolve, reject) {
        resolve("ITEM " + i);
    }))
}

или подталкивание к myList впоследствии.

for (let i = 1; i <= 20; i++) {
    var myPromise = new Promise(function(resolve, reject) {
        resolve("ITEM " + i);
    })
    myList.push(myPromise);
}
22
задан Josh Caswell 3 November 2011 в 18:12
поделиться

3 ответа

Одна опция (и обычно предпочитаемый при работе в SQL) состоит в том, чтобы записать изображение в файл в системе и сохранить путь (или некоторый другой вид идентификатора) в базе данных.

9
ответ дан 29 November 2019 в 04:12
поделиться

Необходимо будет преобразовать UIImage, размещенный в UIImageView в двоичный BLOB для устройства хранения данных в SQLite. Чтобы сделать это, можно использовать следующее:

NSData *dataForImage = UIImagePNGRepresentation(cachedImage);
sqlite3_bind_blob(yourSavingSQLStatement, 2, [dataForImage bytes], [dataForImage length], SQLITE_TRANSIENT);

Это генерирует представление PNG Вашего изображения, сохранит его в экземпляре NSData и затем свяжет байты от NSData как BLOB для второго аргумента в Вашем SQL-запросе. Используйте UIImageJPEGRepresentation в вышеупомянутом для хранения в том формате, если Вам нравится. Необходимо будет добавить столбец BLOB к соответствующей таблице в базе данных SQLite.

Для получения этого изображения можно использовать следующее:

NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(yourLoadingSQLStatement, 2) length: sqlite3_column_bytes(yourLoadingSQLStatement, 2)];       
self.cachedImage = [UIImage imageWithData:dataForCachedImage];
[dataForCachedImage release];
31
ответ дан 29 November 2019 в 04:12
поделиться

Запись изображения в БД SQLite

if(myImage != nil){
    NSData *imgData = UIImagePNGRepresentation(myImage);
    sqlite3_bind_blob(update_stmtement, 6, [imgData bytes], [imgData length], NULL);    
    }
    else {
        sqlite3_bind_blob(update_stmtement, 6, nil, -1, NULL);
    }

Чтение из БД SQLite:

NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(init_statement, 6) length:sqlite3_column_bytes(init_statement, 6)];
        if(data == nil)
            NSLog(@"No image found.");
        else
            self.pictureImage = [UIImage imageWithData:data];   
2
ответ дан 29 November 2019 в 04:12
поделиться