gpt4 book ai didi

ios - 捕获损坏的 MapBox 文件 (.mbtiles) 的错误

转载 作者:行者123 更新时间:2023-11-29 10:54:45 25 4
gpt4 key购买 nike

我在捕获损坏的 .mbtiles 文件的异常时遇到问题,这需要 MapBox。如果文件损坏,在初始化 MapBox View 时:

self.mapView = [[RMMapView alloc] initWithFrame:self.frame andTilesource:self.tilesStandard];

我得到错误:未知错误调用sqlite3_step(11:数据库磁盘镜像格式错误)rs

我该怎么做才能捕捉到这个错误?

更新:我按照incanus的建议,直接使用SQLite库打开MBTiles进行测试,解决了这个问题:

- (BOOL)isReadableDatabase:(sqlite3 *)database {
BOOL result = YES;
sqlite3_stmt* statement;
char * errmsg;
NSString *query = @"SELECT name FROM sqlite_master WHERE type=\'table\'";

if ( sqlite3_prepare_v2(database, query.UTF8String, -1, &statement, NULL) == SQLITE_OK ) {

while(sqlite3_step(statement) == SQLITE_ROW ) {
NSString *tableName = [NSString stringWithCString:(const char *)sqlite3_column_text(statement, 0) encoding:NSUTF8StringEncoding];
NSString *query_table = format(@"SELECT * FROM %@", tableName);

if (sqlite3_exec(database, query_table.UTF8String, NULL, NULL, &errmsg) != SQLITE_OK) {
DLog(@"The map is corrupted with sql error: %s", sqlite3_errmsg(database))
sqlite3_close(database);
result = NO;
break;
}
}
}

sqlite3_clear_bindings(statement);
sqlite3_finalize(statement);

return result;
}

最佳答案

我建议您先尝试直接使用 FMDB 或 SQLite 库打开 MBTiles 进行测试。两者都应该有调用,让您在将它们传递给更高级别的库之前确定事情是否成功。

关于ios - 捕获损坏的 MapBox 文件 (.mbtiles) 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18922420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com