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 に答える