2012-03-14 12 views
0

プッシュ通知を受け取るアプリがあります。 アプリケーションメニューのボタンの近くに正しい値のバッジを追加したいと思います(古いFacebookアプリを覚えていますか?)。Xcode:ラベルに追加するバッジの値を取得する

私はAppDelegateの通知からバッジの値を取得しようとしています。これを他のビューコントローラで使用するにはNSUserDefaultに保存してください。

NSString * badgeValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"]; 

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:badgeValue forKey:@"badge"]; 
[defaults synchronize]; 

問題は、私はラベルに値を入れしようとするとアプリが

'NSInvalidArgumentException'、理由をクラッシュすることです:「 - [__ NSCFNumber isEqualToStringは:]:認識されていないセレクタはインスタンスに送信

Xcodeは私が文字列でbadgeValueをセーブするが、私はそれが言うラベルに文字列を入れたとき、私はBAことがわかり、デバッグすることで、適切な文字列

if ([badgeValue isKindOfClass:[NSString class]]) { 
    NSLog(@"it is string !!!!!!!!!!!!!!!"); 
    // treat it as a string object 
} else { 
    NSLog(@"it is not a string !!!!!!!!!!!!!!!"); 
    // treat it as a number object 
} 

ではありませんdgeValueは実際の文字列ではなく__NSCFNumberであり、文字列で変換しようとすると返り値は長く変わってしまいます。 通知のバッジ値を取得する方法はどこでも検索されましたが、私が考えることができる唯一のオプションはPHPクエリです。

答えて

0

「XcodeでbadgeValueを文字列に保存する」とはどういう意味ですか? badgeValueをNSNumberとして入力しようとすると、エラーまたはコンパイラ警告が表示されますか?ドキュメントと独自のログでは、キー "バッジ"の値がNSNumberであることがわかります。

NSNumber * badgeValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"]; 
[label1 setIntValue:badgeNumber.intValue]; 

このような機能は動作しませんか?

0

はい、ちょうど昨日私は

NSString *string = [NSString stringWithFormat:@"%d", [badgeValue intValue]]; 

にしようと、それは動作します!助けてくれてありがとう

関連する問題