我的应用程序是我之前询问过的应用程序。它是一个 XML 解析器,它显示 XML 中的项目数,等于应用程序打开的天数。我的问题主要是这样的:我在 1.0 版中没有设置 iCloud。由于该应用程序的受欢迎程度,我很快将发布该应用程序的 iPad 版本,并且担心那些在 iPhone 上使用该应用程序一段时间的人现在将在 iPad 版本上重置回第 1 天。我在 GitHub 上找到了 MKiCloudSync,想知道这是否可以很好地实现,以便应用程序始终在所有设备上保持同步?如果是这样,在应用程序的 1.1 版中添加它会自动与现有库同步,还是他们必须先更新 iPhone 版本,让它同步,然后再为 iPad 获取它?基本上只是希望它保持同步。
这是我用来存储 NSUserDefault 值的 AppDelegate 代码。虽然,一些 NSUserDefaults 可以在其他类中更改。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
sleep(3);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults integerForKey:@"totalDays"]) {
// if there is no value for the key, set it to 1
[defaults setInteger:0 forKey:@"totalDays"];
}
if (![defaults objectForKey:@"currentDate"]) {
[defaults setObject:@"32 01" forKey:@"currentDate"];
}
if (! [defaults boolForKey:@"marked"]) {
[defaults setBool:NO forKey:@"marked"];
}
if (![defaults arrayForKey:@"checkedrows"]) {
NSMutableArray *arr1 = [NSMutableArray arrayWithArray:[defaults arrayForKey:@"checkedrows"]];
}
NSDate *date = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"dd MM"];
NSString *dateString = [dateFormat stringFromDate:date];
[dateFormat release];
NSString *checkdate = [defaults objectForKey:@"currentDate"];
if (![dateString isEqualToString:checkdate]) {
NSInteger currentnumber = [defaults integerForKey:@"totalDays"];
[defaults setObject:dateString forKey:@"currentDate"];
[defaults setInteger:currentnumber+1 forKey:@"totalDays"];
}
[defaults synchronize];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"enteredfore");
NSDate *date = [NSDate date];
// format it
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"dd MM"];
// convert it to a string
NSString *dateString = [dateFormat stringFromDate:date];
// free up memory
[dateFormat release];
NSString *checkdate = [defaults objectForKey:@"currentDate"];
NSLog(@"hereitis%@", checkdate);
if (![dateString isEqualToString:checkdate]) {
NSInteger currentnumber = [defaults integerForKey:@"totalDays"];
NSLog(@"The current number is %i", currentnumber);
[[NSNotificationCenter defaultCenter] postNotificationName:@"EnteredForeground"
object:nil];
[defaults setObject:dateString forKey:@"currentDate"];
[defaults setInteger:currentnumber+1 forKey:@"totalDays"];
[defaults synchronize];
}
}
谢谢