当前位置: 首页 > 面试题库 >

如何使用NSNotificationCenter传递对象

淳于宏伯
2023-03-14
问题内容

我试图将对象从我的应用程序委托传递到另一个类的通知接收器。

我想传递整数messageTotal。现在我有:

在接收器中:

- (void) receiveTestNotification:(NSNotification *) notification
{
    if ([[notification name] isEqualToString:@"TestNotification"])
        NSLog (@"Successfully received the test notification!");
}

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissSheet) name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveTestNotification:) name:@"eRXReceived" object:nil];

在执行通知的类中:

[UIApplication sharedApplication].applicationIconBadgeNumber = messageTotal;
[[NSNotificationCenter defaultCenter] postNotificationName:@"eRXReceived" object:self];

但是我想将对象传递messageTotal给另一个类。


问题答案:

您必须使用“ userInfo”变体,并传递一个包含messageTotal整数的NSDictionary对象:

NSDictionary* userInfo = @{@"total": @(messageTotal)};

NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"eRXReceived" object:self userInfo:userInfo];

在接收端,您可以按以下方式访问userInfo字典:

-(void) receiveTestNotification:(NSNotification*)notification
{
    if ([notification.name isEqualToString:@"TestNotification"])
    {
        NSDictionary* userInfo = notification.userInfo;
        NSNumber* total = (NSNumber*)userInfo[@"total"];
        NSLog (@"Successfully received test notification! %i", total.intValue);
    }
}


 类似资料:
  • 问题内容: 我正在快速的ios应用程序中实现。 目前,在几个面板上,我正在侦听服务器并等待传入​​消息。我这样做是通过在每个面板中调用该函数: 但是我注意到这是一个错误的方法,我需要更改它-现在我只想开始监听一次传入的消息,并且当出现任何消​​息时-将此消息传递给任何侦听它的面板。 所以我想通过NSNotificationCenter传递传入的消息。到目前为止,我能够传递发生了某些事情的信息,但无

  • 问题内容: 我正在尝试使用 prepareForSegue()* 将对象传递到另一个场景 * 我有currentVehicle对象来捕获这些对象。但是,当我尝试运行时,它坏了,并得到有关向下转换的错误。 错误编辑 无法将类型“ XXX.DisplayViewController”(0x1082dcd80)的值强制转换为“ XXX.VehicleDetailsTableViewController”

  • 问题内容: 当将对象作为参数传递时,JavaScript通过引用传递它们,这使得创建对象的本地副本变得困难。 将有和。 通过克隆可以解决这个问题。简单的例子: 不会或。 题 除了创建本地副本/克隆以外,还有没有更好的方法可以按值传递对象? 问题答案: 并不是的。 根据你的实际需要,一个 可能性 可能是集作为一个新的对象的原型。 因此,您添加到的任何属性都不会添加到中。使用与中的属性相同的属性名称添

  • 问题内容: 我想将一个对象传递给控制器​​,并在控制器中检索值。我定义如下: HTML代码: Javascript: 但是我无法在控制器中检索值。它越来越空。 问题答案: 尝试以下操作:-您正在传递对象数组,因此您应该执行HTTPPost而不是HttpGet(这将适用于通过查询字符串发送它的原始类型数组,例如int,strgin等列表)(请记住查询字符串的限制)。尝试使用HTTPPost

  • 我的问题是: 在FooController中: 假设我有一个带有“status”变量的另一个对象栏。如何传递该对象,以便在相同的表单中提交输入? 如: 已经谢谢了。

  • 问题内容: 我想从Java方法返回对Scala对象的引用。我怎样才能做到这一点? 我的Scala对象是这样的: …并且我希望我的Java方法像这样: 有没有办法做到这一点? 问题答案: 应该管用。 编辑:之所以可行,是因为这是Scala表示单例对象的方式。该类中有一个名为的字段,其中填充有该类的单个有效实例。但是还有一个叫做的类,它将所有方法复制为静态方法。这样一来,您就可以在大多数情况下像Jav