在iOS中发送通知有什么可能性

时间:2012-09-17 07:24:41

标签: ios uiviewcontroller nsuserdefaults apple-push-notifications nsnotificationcenter

我想知道发送通知的可能性。 是否可以发送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"]);
}

2 个答案:

答案 0 :(得分: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以及

答案 1 :(得分:0)

您无法发送NSUserDefault,但您可以发送在base64中转换的整个Class(Archiver / Unarchiver)数据。然后从NSUserDefault创建NSData

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

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

希望这会有所帮助。