使用目标c在xcode模拟器中选择图像表单库或拍摄相机图像

时间:2017-02-28 14:19:04

标签: ios objective-c iphone sqlite

我在iOS中使用UIImagePickerControllerDelegate从图库或相机中获取图像它在iphone中的真实设备中工作正常但我可以在模拟器中使用这个东西,这样我就可以在sqlite DB文件中看到图像存储。 这是我在sqlite中存储图像的代码:

 NSString *docsDir;
NSArray *dirPaths;
NSString *dbPath;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = dirPaths[0];
dbPath = [[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@"clientId.db"]];
sqlite3_stmt *compiledStmt;
sqlite3 *db;
if(sqlite3_open([dbPath UTF8String], &db)==SQLITE_OK){
    NSString *insertSQL=@"insert into MESSAGE(MESSAGE,SEENTO) VALUES(?,'visitor')";
    if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK){
        //            UIImage *image = [UIImage imageNamed:@"prem.png"];
        UIImage *image = chosenImage;

        NSData *imageData=UIImagePNGRepresentation(image);

        sqlite3_bind_blob(compiledStmt, 1, [imageData bytes], [imageData length], SQLITE_TRANSIENT);

        if(sqlite3_step(compiledStmt) != SQLITE_DONE ) {
            NSLog( @"Error: %s", sqlite3_errmsg(db) );
        } else {
            NSLog( @"Insert into row id = %lld", (sqlite3_last_insert_rowid(db)));
        }

        sqlite3_finalize(compiledStmt);
    }
}
sqlite3_close(db);

唯一的是我想从模拟器中选择图像,这样我就可以提取db文件并查看sqlite.db文件中存储的值。有没有办法选择图像表单模拟器,否则可以显示sqlite.db文件形式真正的iPhone设备。

1 个答案:

答案 0 :(得分:0)

解决方案1 ​​ - 对于模拟器,您可以将源类型设置为photoLibrary或savedPhotosAlbum,

https://developer.apple.com/reference/uikit/uiimagepickercontroller

然后,您需要找到模拟器文档目录文件夹,并在那里找到sqlite文件。

解决方案2.1 - 启用itunes共享并通过itunes->查看sqlite文件设备 - >滚动到底部 - >点击你的应用 - >找到并下载sqlite文件。 要启用itunes分享,请按以下步骤操作 - http://stackoverflow.com/a/6029954/4549304

解决方案2.2 - 直接从xcode访问它,点击此链接

http://help.apple.com/xcode/mac/8.0/#/dev816c242e1