在iCloud环境中检测应用程序的第一次运行(IOS / OSX)

时间:2012-12-14 16:10:54

标签: ios xcode macos core-data icloud

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

  1. 从未在任何地方运行

  2. 已在此设备上运行

  3. 已在其他设备上运行

  4. 这是与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";
    

1 个答案:

答案 0 :(得分:2)

您可以在iCloud中检查文档是否存在。唯一的问题是iCloud异步执行它想要的东西,所以不能保证你实际上能够看到那个文档。