gpt4 book ai didi

ios - 检查服务器上的 sqlite user_version 以更新 iOS 应用程序

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

我有这个代码:

-(int)queryUserVersion: (sqlite3*) db {
// get current database version of schema
static sqlite3_stmt *stmt_version;


if(sqlite3_prepare_v2(db, "PRAGMA user_version;", -1, &stmt_version, NULL) == SQLITE_OK) {
while(sqlite3_step(stmt_version) == SQLITE_ROW) {
databaseVersion = sqlite3_column_int(stmt_version, 0);
NSLog(@"%s: version %d", __FUNCTION__, databaseVersion);
}
NSLog(@"%s: the databaseVersion is: %d", __FUNCTION__, databaseVersion);
} else {
NSLog(@"%s: ERROR Preparing: , %s", __FUNCTION__, sqlite3_errmsg(db) );
}
sqlite3_finalize(stmt_version);

return databaseVersion;
}

我可以检查用户在 iPhone 文档目录中拥有的 sqlite user_version。我之前下载了 SQLite 数据库。我想知道每次用户加载应用程序时本地 SQLite user_version 是否与我服务器上的 SQLite user_version 相同,如果它们不同,它会下载新版本。

如何在下载前检查 SQLite user_version

更新

我在考虑这个问题,我正在使用 Parse API 来实现我应用程序的某些功能,所以我决定使用这个系统:

  1. 我将 user_version sqlite 值存储在 Parse Webservices 上以手动更新它。
  2. 我检查本地化 iPhone 语言以了解我要下载的数据库(我有相同的数据库,但有 2 种语言)
  3. 我使用 NSUserDefaults 检查它是否是第一次运行该应用程序。
  4. 如果是第一次,它会检查语言,然后从我的服务器下载正确的数据库。
  5. 如果不是第一次运行该应用程序,我将检查 Parse 当前的 user_version 是什么,然后将其与 iPhone 上的本地 user_version sqlite 数据库进行比较。如果它有更高的值(value),它会下载数据库来更新它。

新问题:当我检查 Parse 上的 user_version 时,我使用查询 FindObjectsInBackgroundWithBlock(异步),所以...在检查 user_version 之前运行应用程序并进行数据库下载。我该如何处理?我已经尝试使用 NSTimer..

代码:

-(void)checkUserVersion{
PFQuery *query = [PFQuery queryWithClassName:@"sqliteversion"]; //1
// NSNumber *n=databaseVersion;
[query whereKey:@"user_version" equalTo:[NSNumber numberWithInt:[databaseVersion integerValue]]];//2
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {//4
if (!error && [objects count]>0) {

for (PFObject *object in objects) {
valor1=[[object objectForKey:@"Value"]intValue];
user_version=[NSNumber numberWithInt:valor1];


}

}
}];}

最佳答案

听起来您在这里尝试做的是向您的应用提供一组数据,并让您的应用在启动时检查是否有新数据。

我的建议是找到另一种方法,而不是在 sqlite 数据文件中找到其他方法,供您的应用程序使用它来查看服务器上是否有新数据。如果不下载该文件,确实没有什么好方法可以查看该文件中的内容。更好的办法是在您的应用可以查询的服务器上放置一些东西,以确定它是否需要下载新数据。

我建议做一些事情,比如在文件上使用时间戳。如果你这样做得当,你可能会利用 NSURLCache 来为你处理一些逻辑。

祝你好运!

关于ios - 检查服务器上的 sqlite user_version 以更新 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421097/

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