0
我在這裏看到了幾個如何檢測「獨立」應用程序第一次運行的答案。但移動到一個共享(iCloud的)環境中,是否有一種方法來檢測一個應用程序有:在iCloud環境中檢測應用程序(IOS/OSX)的第一次運行
沒有去過任何地方運行
已在此設備上運行
一直跑在另一臺設備上
這是一個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";
當您使用核心數據,並且該應用程序不是基於文檔的時候,只有交易,並且它們是相當隨機編號的。 –
其實,你的回答讓我思考,雖然我沒有基於文檔的應用程序,但很容易設置雲用戶默認。所以,我會將您的解決方案標記爲正確的。謝謝 –