0

我想知道发送通知的可能性。可以发一个NSUserDefaults吗?

我知道你可以再发一个viewcontroller

像这样:

NSUserDefaultsDidChangeNotification只是在更改默认值时发出的通知。要听它,您需要以下代码:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
           selector:@selector(defaultsChanged:)  
               name:NSUserDefaultsDidChangeNotification
             object:nil];

defaultsChanged:这将在触发通知时调用该方法。您需要像这样实现此方法:

- (void)defaultsChanged:(NSNotification *)notification {
 // Get the user defaults
NSUserDefaults *defaults = (NSUserDefaults *)[notification object];

// Do something with it
NSLog(@"%@", [defaults objectForKey:@"nameOfThingIAmInterestedIn"]);
}
4

2 回答 2

2

好,

NSNotificationCenter这是通过使用发送字典的可能性

- (void)postNotificationName:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo

在您发布它的课程中:

NSDictionary *dict;

dict = [NSDictionary dictionaryWithObjectsAndKeys: yourStuff, nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@”someString” object:nil userInfo:dict];

在课堂上做听力:

[[NSNotificationCenter deHaultCenter] addObserver:self selector:@selector(someMethod: ) name:@”someString” object:nil];
…
- (void)someMethod:(NSNotification *)notification {
NSDictionary *tmp = notification.userInfo;
//You could access notification.object here too
}

编辑: 但通常在从服务器接收推送通知时,您有一个名为:

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{
for (id key in userInfo) {
        NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
    }
}

Dictionary在这种方法中,您也可以获得有效负载

于 2012-09-17T07:45:44.223 回答
0

您不能发送NSUserDefault,但您可以发送以 base64 转换的整个类(归档器/取消归档器)数据。接下来创建您的NSUserDefaultfrom NSData

我写了一篇文章来与应用程序交换数据base64并使用它。

http://www.albertopasca.it/whiletrue/2012/04/objective-c-share-classes-objects-apps/

希望这可以帮助。

于 2012-09-17T07:51:26.683 回答