solos que puedo pudo por mis mensajes los eliminar borrar borran borra ios objective-c sqlite uiimage

ios - puedo - por que se borran solos los mensajes de whatsapp



Imagen no almacenada en sqlite (2)

Aquí cómo lo modifico según su uso.

NSData *imageData = UIImagePNGRepresentation(imgView.image); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeStyle: NSDateFormatterShortStyle]; dateFormatter.dateFormat = @"ddMMyyyyhhmmss_SSS_a"; NSString *currentTime = [dateFormatter stringFromDate: [NSDate date]]; NSString *imageName=[NSString stringWithFormat:@"Image_%@",currentTime]; NSString *saveFilePath =[NSString stringWithFormat:@"%@.%@",imageName,@"png"]; //Store saveFilePath string to your database NSString *localFilePath1 = [documentsDirectory stringByAppendingPathComponent:saveFilePath]; [imageData writeToFile:localFilePath1 atomically:YES];

Espero que te ayude

Hice una demostración que almacena una imagen en la base de datos. Actualmente no recibo ningún error, pero mi imagen no está almacenada en la base de datos sqlite. Por favor, mira el código a continuación y dime dónde está mi error.

Clase DBManager

sqlite3 *sqlite3DatabaseObject; sqlite3_stmt* sqlite3Statement; -(void)database { directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); documentsDirectory = [directoryPaths objectAtIndex:0]; NSString * databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"informationdb.sql"]]; NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:databasePath] == NO) { const char *dbPath = [databasePath UTF8String]; if (sqlite3_open(dbPath, &sqlite3DatabaseObject)== SQLITE_OK) { char * errorMessage; const char *sqlite3Query = "CREATE TABLE IF NOT EXISTS PICTURES (PHOTO BLOB)"; if (sqlite3_exec(sqlite3DatabaseObject, sqlite3Query, NULL, NULL, &errorMessage)!= SQLITE_OK) { NSLog(@"failed = %@",sqlite3DatabaseObject); } sqlite3_close(sqlite3DatabaseObject); }else{ NSLog(@"failed to create database"); } } } - (void) SaveImagesToSql: (NSData*) imgData { NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"informationdb" ofType:@"sql"]; const char* sqlite3Query = "INSERT INTO PICTURES (PHOTO) VALUES (?)"; int openDatabaseResult = sqlite3_open_v2([databasePath UTF8String], &sqlite3DatabaseObject, SQLITE_OPEN_READWRITE , NULL); if (openDatabaseResult == SQLITE_OK) { int sqlite3Prepare = sqlite3_prepare_v2(sqlite3DatabaseObject, sqlite3Query, -1, &sqlite3Statement, NULL); if( sqlite3Prepare == SQLITE_OK ) { sqlite3_bind_blob(sqlite3Statement, 1, [imgData bytes], [imgData length], SQLITE_TRANSIENT); sqlite3_step(sqlite3Statement); } else { NSLog(@"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject)); } sqlite3_finalize(sqlite3Statement); } else NSLog( @"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject) ); sqlite3_close(sqlite3DatabaseObject); }

Clase ViewController

- (void)viewDidLoad { [super viewDidLoad]; DBManager * dbmClass = [[DBManager alloc]init]; [dbmClass database]; imgView.userInteractionEnabled = YES; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(uploadOrCapture)]; [singleTap setNumberOfTapsRequired:1]; [imgView addGestureRecognizer:singleTap]; } - (IBAction)btnSave:(id)sender { DBManager*dbmClass = [[DBManager alloc]init]; NSData *imageInData = UIImagePNGRepresentation(imgView.image); [dbmClass SaveImagesToSql:imageInData]; [self dismissViewControllerAnimated:YES completion:nil]; }

No puedo descubrir el problema. Ejecuta con éxito todo el código, pero cuando descargo la base de datos del dispositivo y lo compruebo, no hay datos de imagen almacenados.

Gracias por adelantado.
Mihir.


simplemente reemplace esta función a mi código porque tiene una ruta de base de datos incorrecta

- (void) SaveImagesToSql: (NSData*) imgData { directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); documentsDirectory = [directoryPaths objectAtIndex:0]; NSString * databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"informationdb.sql"]]; const char* sqlite3Query = "INSERT INTO PICTURES (PHOTO) VALUES (?)"; int openDatabaseResult = sqlite3_open_v2([databasePath UTF8String], &sqlite3DatabaseObject, SQLITE_OPEN_READWRITE , NULL); if (openDatabaseResult == SQLITE_OK) { int sqlite3Prepare = sqlite3_prepare_v2(sqlite3DatabaseObject, sqlite3Query, -1, &sqlite3Statement, NULL); if( sqlite3Prepare == SQLITE_OK ) { sqlite3_bind_blob(sqlite3Statement, 1, [imgData bytes], [imgData length], SQLITE_TRANSIENT); sqlite3_step(sqlite3Statement); } else { NSLog(@"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject)); } sqlite3_finalize(sqlite3Statement); } else NSLog( @"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject) ); sqlite3_close(sqlite3DatabaseObject); }

aquí esta es la captura de pantalla de la base de datos

No arrastre a la base de datos en su proyecto. Si hay algún problema que no me lo diga