0

我有一个简单的文字游戏,我刚刚放在 App Store 上。游戏进度在我的 iPad 和 iPhone 7 plus 上从一个会话保存到另一个会话,但在 iPhone XS Max 上没有。

因此,该代码可用于保存游戏进度,但 XS Max 除外。其他 XS Max 手机和我的一样。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.


#if 0
    NSArray *puzzlesArray;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *docFile = [documentsDirectory stringByAppendingPathComponent:@"Puzzles.plist"];

    puzzlesArray = [[NSArray alloc] initWithContentsOfFile:docFile];
    if (!puzzlesArray) {
        NSString *thePath = [[NSBundle mainBundle] pathForResource:@"puzzles" ofType:@"plist"];

        puzzlesArray = [[NSArray alloc] initWithContentsOfFile:thePath];
    }
#endif


    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"applicationWillResignActive" object:self];

}

- (void)applicationDidEnterBackground:(UIApplication *)application {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"applicationDidEnterBackground" object:self];
}

两者都在游戏控制器中具有适当的代码。

- (BOOL)writeApplicationData:(NSData *) data toFile:(NSString *)docFile {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    if (!documentsDirectory) {

        NSLog(@"Documents directory not found!");

        return (NO);

    }

    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:docFile];


    return ([data writeToFile:appFile atomically:YES]);
}

- (void)applicationWillTerminate:(UIApplication *)application {

#if 0

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *docFile = [documentsDirectory stringByAppendingPathComponent:@"puzzles.plist"];

    NSData *pData = [[[NSData alloc] initWithContentsOfFile:docFile] autorelease];

    [self writeApplicationData:pData toFile:docFile];
#endif // if 0

}

- (NSData *)applicationDataFromFile:(NSString *)docFile {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:docFile];

    NSData *pData = [[NSData alloc] initWithContentsOfFile:appFile];

    return (pData);

}

@end

applicationDidEnterBackground我在or中没有代码applicationWillEnterForeground

对于 XS Max,游戏会保存两天左右,然后再返回入口点。

4

0 回答 0