2013-08-20 51 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