2013-08-20 47 views
-1

好吧,所以我想到一個想法來解決我最後一篇文章的限制(任何閱讀它的人都在閱讀這篇文章)。我需要做的是檢測應用程序徽章號是否大於0,然後根據它是否更大來設置布爾值。這是我的代碼:布爾根據徽章號碼

Code is no longer relative to the question. 

好吧,設置布爾值。接下來,我讀它,並用這個代碼執行我的行動:

Code is no longer relative to the question. 

我唯一的問題是,無論什麼證件號碼,它說,編號爲1,然後即使它不執行我的代碼是1.任何人有一個想法我做錯了什麼?這是else語句還是我檢測徽章號碼的方式?謝謝你的幫助!我真的很擔心這是因爲這是我在我的應用程序中遇到的唯一一面牆。

編輯: 我解決了我的問題,下面是我使用的代碼。請注意,這必須進入應用程序代理。

int badge = application.applicationIconBadgeNumber; 
if(badge) 
{ 
    NSLog(@"App Badge is Greater Than 0"); 
} 
    else 
{ 
    NSLog(@"App Badge is Equal To 0"); 
} 
+0

什麼是'appDidBecomeActive'?我沒有看到你在哪裏註冊,作爲任何通知的選擇器。它永遠不會被調用。另外,我沒有看到在布爾值中設置了「YES」以外的值。 –

+0

它確實被調用(我在我的調試器中看到它)我只是沒有發佈該部分。它位於AppDelegate.m文件中。 –

回答

0

好吧,我發現閱讀關於使用Cocoa的書後,回答我自己的問題。這是我所做的:

int i = application.applicationIconBadgeNumber; 
int y = 0; 
NSLog(@"The result is %@", (y<i ? @"True" : @"False")); 
if(i) 
{ 
    NSLog(@"App Badge is Greater Than 0"); 
} 
else 
{ 
    NSLog(@"App Badge is Equal To 0"); 
} 

你把那個 - (void)applicationDidBecomeActive:(UIApplication *)應用程序。此代碼比較應用的圖標徽章,然後查看它是否大於y(在我的情況下爲0),並根據徽章號碼是什麼返回true或false。希望這可以幫助別人!

編輯:閱讀上面的帖子。它有一個更簡單的代碼版本。

0

通常,一個使用NSUserDefaults跨應用程序的調用持久地存儲值。雖然我不知道你真正需要使用NSUserDefaults(爲什麼不直接分配一個全局變量Boolean needAutoSMS),如果你使用的是NSUserDefaults進行設置你的價值後,執行以下操作:

[[NSUserDefaults standardUserDefaults] synchronize] 
+0

同步不鼓勵,只有在您需要更改立即生效時才能使用 – Daniel