2

每次输入某个方法时,我都想创建一个新的 UILocalNotification 。我认为这必须通过从数组或沿着这条线的东西读取来完成,但我无法弄清楚。如何在不硬编码以下内容的情况下动态地做这样的事情:

-(void) createNotification
 {
 UILocalNotification *notification1;
 }

现在我希望能够在每次输入 createNotification 时创建通知 2、通知 3 等。出于特定原因,我可以取消相应的通知,而无需全部取消。

以下是我尝试过的,也许我很遥远……也许不是。无论哪种方式,如果有人可以提供一些输入,将不胜感激。谢谢!

-(void) AddNewNotification
{

UILocalNotification *newNotification = [[UILocalNotification alloc] init];
//[notificationArray addObject:newNotification withKey:@"notificationN"];
notificationArray= [[NSMutableArray alloc] init];

[notificationArray addObject:[[NSMutableDictionary alloc]
                   initWithObjectsAndKeys:newNotification,@"theNotification",nil]];

  }
4

1 回答 1

2

您快到了:使用数组当然是正确的做法!唯一的问题是每次执行AddNewNotification方法时都会不断创建数组的新实例。您应该创建notificationArray一个实例变量,并将其初始化代码移动notificationArray= [[NSMutableArray alloc] init];到声明的类的指定初始化程序中notificationArray

如果您希望每次通知您插入一个单独的密钥以便以后找到它,请使用NSMutableDictionary而不是NSMutableArray. 重写AddNewNotification方法如下:

-(void) addNewNotificationWithKey:(NSString*)key {
    UILocalNotification *newNotification = [[UILocalNotification alloc] init];
    [notificationDict setObject:[[NSMutableDictionary alloc]
               initWithObjectsAndKeys:newNotification,@"theNotification",nil]
        forKey:key];

}

当您调用该addNewNotificationWithKey:方法时,您可以为新添加的通知提供密钥,例如

[self addNewNotificationWithKey:@"notification1"];
[self addNewNotificationWithKey:@"notification2"];

等等。

于 2012-07-09T00:00:46.327 回答