「スタンドアロン」アプリの最初の実行を検出する方法について、ここでいくつかの回答を見てきました。しかし、共有 (iCloud) 環境に移行する場合、アプリに次のものがあることを検出する方法はありますか?
どこでも実行されたことはありません
このデバイスで実行されました
別のデバイスで実行された
これは 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";