我想知道发送通知的可能性。
是否可以发送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"]);
}
答案 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/
希望这会有所帮助。