首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >app更新的NSUserDefaults行为

app更新的NSUserDefaults行为
EN

Stack Overflow用户
提问于 2013-11-01 17:46:59
回答 2查看 2.3K关注 0票数 2

我的iOS应用程序中有一种方法,当检测到我的服务器何时有更大的应用程序版本(一个新的ipa版本)时,就会更新应用程序。如果用户想下载它,应用程序会在iPad上更新自己。

问题是,当应用程序第一次打开新版本时,我想从DB更新一些实体,但我不知道如何。我无法调试它,因为当我下载最新的ipa时,对于XCode,应用程序崩溃了。

我想在AppDelegate.m:

代码语言:javascript
复制
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
   //do the stuff i wanna do
}
else
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    // This is the first launch ever
}

但是我不知道这个[NSUserDefaults standardUserDefaults setBool:YES forKey:@"HasLaunchedOnce"]是否在更新之前设置为YES,因为这个过程应该是:

(1)首次启动该应用程序。2)应用程序检测更新版本。3)现在下载同样的应用程序->,苹果将旧版本“替换”到新版本。4)打开新版本的应用程序。5)只在我第一次推出新版本的时候做我想做的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-01 17:55:26

您可以使用存储在NSUserDefaults中的整数,每个版本的应用程序都有一个硬编码的版本号。如果整数低于硬编码版本,提示更新:

代码语言:javascript
复制
NSInteger currentVersion = 3; // increment with each new version

if ([[NSUSerDefaults standardUserDefaults] integerForKey:@"HasLaunchedForVersion"] < currentVersion) {

    [[NSUserDefaults standardUserDefaults] setInteger:currentVersion forKey:@"HasLaunchedForVersion"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    // This is the first launch for this version

} else {
    // App hasn't been updated since last launch
}
票数 5
EN

Stack Overflow用户

发布于 2013-11-01 17:49:16

他们不会被移走。而且会有古老的价值观。

如果旧版本中使用"HasLaunchedOnce“。使用一个新的,并称之为"HasUpdateLaunchedOnce“。

检查这两个值并决定要做什么。

代码语言:javascript
复制
if (HasLaunchedOnce exists && HasUpdateLaunchedOnce not exists)
  // proceed
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19732311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档