【问题标题】:Boolean Depending On Badge Number取决于徽章编号的布尔值
【发布时间】:2013-08-20 15:59:00
【问题描述】:

好的,所以我想到了一个想法来绕过我上一篇文章的限制(对于正在阅读这篇文章的任何人来说)。我需要做的是检测应用程序徽章编号是否大于 0,然后根据它是否更大设置一个布尔值。这是我的代码:

Code is no longer relative to the question.

好的,设置布尔值。接下来我阅读它并使用以下代码执行我的操作:

Code is no longer relative to the question.

我唯一的问题是,无论徽章编号是什么,它都说编号是 1,然后即使是 1 也不会执行我的代码。有人知道我做错了什么吗?是其他语句还是我检测徽章编号的方式?谢谢你的帮助!我对此感到非常压力,因为这是我在应用程序中遇到的唯一一堵墙。

编辑: 我已经解决了我的问题,下面是我使用的代码。请注意,这必须放在应用委托中。

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

【问题讨论】:

  • 什么是appDidBecomeActive?我看不到您在哪里将其注册为任何通知的选择器。它永远不会被调用。另外,我看不到您在哪里将 YES 以外的任何值设置为布尔值。
  • 它确实被调用了(我在调试器中看到它)我只是没有发布那部分。它位于 AppDelegate.m 文件中。

标签: ios if-statement detection badge


【解决方案1】:

通常,使用NSUserDefaults 在应用程序的调用中持久存储值。虽然我不确定您是否真的需要使用NSUserDefaults(为什么不将“全局”变量分配为Boolean needAutoSMS),但如果您使用的是NSUserDefaults,请在设置值后执行以下操作:

[[NSUserDefaults standardUserDefaults] synchronize]

【讨论】:

  • 不鼓励同步,只有在需要更改立即生效时才应使用它
【解决方案2】:

好的,在阅读了一本关于使用 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 *)application 下。此代码比较应用程序的图标徽章,然后查看它是否大于 y(在我的情况下为 0)并根据徽章编号返回真或假。希望这对其他人有所帮助!

编辑:阅读上面的帖子。它有一个更简单的代码版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2011-05-03
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多