我在这里报告了代码。问题在于,使用我的开发设备,它可以完美运行,它会等待iCloud,然后调用方法iCloudSync才可以运行。

使用针对beta测试用户的临时配置文件,它不起作用,因为(我认为-因为控制台中不存在方法iCloudSync的日志记录),不会触发NSUbiquitousKeyValueStoreDidChangeExternallyNotification

我哪里错了?谢谢

/******** GESTIONE ICLOUD ************/

NSUbiquitousKeyValueStore *iCloudStore = [NSUbiquitousKeyValueStore defaultStore];

if(iCloudStore)
{

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(iCloudSync)
                                                 name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification
                                               object:[NSUbiquitousKeyValueStore defaultStore]];


    [iCloudStore synchronize];
    [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey: iCloudEnabled];

}
else
{
    NSLog(@"iCloud is not enabled");
    [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey: iCloudEnabled];
    UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"iCloud not enabled" message:@"iCloud is not working" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alertView show];
}

 /******** FINE GESTIONE ICLOUD ************/

最佳答案

您的选择器看起来不对,它应该只有一个参数(请参阅NSNotificationCenter文档。您应该有

selector:@selector(iCloudSync:)     //note the double dot


并且您的iCloudSync函数应如下所示:

-(void) iCloudSync:(NSNotification *)notification
{
do things...
}

关于ios - NSUbiquitousKeyValueStoreDidChangeExternallyNotification未随即分发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22127761/

10-09 02:21