我是Objective-C的新手,我在添加通知观察器时遇到了麻烦。我有一个类CoreDataStack,它是NSObject的子类。我正在尝试为iCloud同步添加通知观察器,但我不断收到编译器错误。代码意义不在NSNotificationCenter上。据我所知,没有任何额外的东西需要导入。我必须遗漏一些非常明显的东西。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(persistentStoreCoordinatorStoresDidChange:)
name:NSPersistentStoreCoordinatorStoresDidChangeNotification
object:self.persistentStoreCoordinator];
- (void)persistentStoreCoordinatorStoresDidChange:(NSNotification*)notification {
NSLog(@"persistentStoreDidImportUbiquitousContentChanges");
}
以下是它给我的错误:
答案 0 :(得分:0)
您的字符串[[NSNotificationCenter defaultCenter] addObserver...
写得正确,但您必须将其放在某个方法中,而不是现在的顶层。
例如,此方法可以放在AppDelegate中:
#import <CoreData/CoreData.h>
@interface AppDelegate ()
@property (nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
...
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Initialize self.persistentStoreCoordinator somehow....
// ...
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(persistentStoreCoordinatorStoresDidChange:)
name:NSPersistentStoreCoordinatorStoresDidChangeNotification
object:self.persistentStoreCoordinator];
return YES;
}
- (void)persistentStoreCoordinatorStoresDidChange:(NSNotification*)notification {
NSLog(@"persistentStoreDidImportUbiquitousContentChanges");
}
当然,任何其他类也可以工作,只需将该字符串[[NSNotificationCenter defaultCenter] addObserver...
作为某些可执行方法的一部分。