0

我有一个在 iOS 9 上运行的应用程序,我使用 Xcode 8 beta 4 为 iOS 10 创建了一个新版本,现在当我在这种情况下将应用程序从以前的版本 (iOS 9) 升级到新版本 (iOS 10) 时......

在 iPhone(使用 ios 9 或 10)上安装带有 Xcode 7 的先前版本,然后终止应用程序并在同一设备上安装带有 Xcode 8 beta 4 的新版本,它将升级视为新安装,因此所有 NSUserDefaults 保存的值返回零!

我测试了一个示例应用程序并遵循了在这种情况下没有问题的场景,NSUserDefaults因为我曾经[NSUserDefaults standardUserDefaults]保存和检索值,但在以下实现中使用共享容器保存数据存在问题,我相信“entitlementGroup”导致问题!

SDK 10 可能无法识别之前由 SDK 9 创建的共享容器!对此有什么想法吗?问题是我无法通过替换[NSUserDefaults standardUserDefaults]而不是使用 entitlementGroup 来修复代码,因为用户当前使用的是应用程序的先前版本并且对新版本的任何更改都不能解决问题,因为它需要在两个版本中修复。

这是代码的主要部分(由以前的开发人员编写):

@implementation AppDelegate

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) { 

    // background launch

} else {

    //foreground launch 

    [self setupForForegroundLaunch:application option:launchOptions];

    [[TrackingManager sharedTrackingManager] setIsBackground:NO];

}

}

@end
4

2 回答 2

0

我注意到 sdk 10 不会导致 NSUserDefaults 出现任何问题。

这只是项目中的订购问题,因为我在此行之前AppDelegate打电话[[TrackingManager sharedTrackingManager] setIsBackground:NO];[self setupForForegroundLaunch:application option:launchOptions];

虽然我通常已经在setupForForegroundLaunch函数和单例TrackingManager类中初始化了 Entitlement_Group,但 Entitlement_Group 也以 nil 值启动,这导致了问题,我只更改了这两行的顺序,现在一切正常。

于 2016-08-16T20:42:48.400 回答
-1

如果权利文件的更改会导致此类问题。请参阅以下链接。

关于权利

于 2019-08-28T16:54:04.120 回答