0

我在这里看到了几个关于如何检测“独立”应用程序的首次运行的答案。但是进入共享(iCloud)环境,有没有办法检测一个应用程序有:

  1. 从未在任何地方运行过

  2. 已在此设备上运行

  3. 已在另一台设备上运行

这是一个与 CoreData 相关的问题。如果应用程序是基于文档的 - 我可以检查文档是否存在..

我目前正在使用此代码将一些项目加载到实体中 - 仅是第一次。随后,目前,用户可以编辑这些项目。但是,下次在新设备上运行应用程序时,任何更改都将丢失。

NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

    appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion];

    NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey];
    if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO) {
        [self firstStartCode];
        [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey];
    }

-(void) firstStartCode {

    NSLog(@"First Time building categories");
    Category *category = (Category *)[NSEntityDescription insertNewObjectForEntityForName:@"Category" inManagedObjectContext:self.coreDataController.mainThreadContext];
    category.name = @"Web Sites";

    category = (Category *)[NSEntityDescription insertNewObjectForEntityForName:@"Category" inManagedObjectContext:self.coreDataController.mainThreadContext];
    category.name = @"E-mail";

    category = (Category *)[NSEntityDescription insertNewObjectForEntityForName:@"Category" inManagedObjectContext:self.coreDataController.mainThreadContext];
    category.name = @"Social Networks";
4

1 回答 1

2

您可以在 iCloud 中检查文档是否存在。唯一的问题是 iCloud 会异步执行它想要的操作,因此无法保证您实际上能够看到该文档的哪一点。

于 2012-12-14T16:14:03.417 回答