我如何在UILocalNotification中更改UserInfo?

Nub*_*lon 2 iphone objective-c ios uilocalnotification

我有6个UILocalNotifications.每个通知都有自己的"userInfo"

  1. @ "1"
  2. @ "2"
  3. @ "3"
  4. @ "4"
  5. @ "5"
  6. @ "6"

然后我删除通知号4,并有5个通知:

  1. @ "1"
  2. @ "2"
  3. @ "3"
  4. @ "5"
  5. @ "6"

如何在通知中更改"userInfo"以获取:

  1. @ "1"
  2. @ "2"
  3. @ "3"
  4. @ "4"
  5. @ "5"

保存代码 -

// Specify custom data for the notification

NSDictionary *infoDict = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%i", i] forKey:@"notif"];
localNotif.userInfo = infoDict;
 i = i + 1;
Run Code Online (Sandbox Code Playgroud)

德尔代码 -

if (flagTable == 1)
{
    int numberPhoto = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
    int numPhFlag = numberPhoto;
    int i = 0;
    NSLog(@"Col notif = %d", numberPhoto);
    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    while (numberPhoto == numPhFlag) {
        localNotif = [[[UIApplication sharedApplication] scheduledLocalNotifications] objectAtIndex:i];
        localNotif.timeZone = [NSTimeZone localTimeZone];
        NSDateFormatter *format = [[NSDateFormatter alloc] init];
        [format setDateFormat:@"dd-MM-yyyy HH:mm"];
        NSString *itemDateWithFormat = [format stringFromDate:localNotif.fireDate];
        NSLog(@"remText2 %@ = fireDate2 %@", itemDateWithFormat, [appDel.fireDateArray objectAtIndex:row]);
        if ([itemDateWithFormat isEqualToString:[appDel.fireDateArray objectAtIndex:row]]) {
            NSLog(@"remText3 %@ = fireDate3 %@", itemDateWithFormat, [appDel.fireDateArray objectAtIndex:row]);
            [[UIApplication sharedApplication] cancelLocalNotification:localNotif];
            numPhFlag = numPhFlag - 1;
        }
        i = i + 1;
    }
    int getNot = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
    NSLog(@"Col notif2 = %d", getNot);
}
Run Code Online (Sandbox Code Playgroud)

我想迭代通知并替换其userInfo中的数据.

Nub*_*lon 5

得到答案=)

int notifCount = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
for (int j = 0; j < notifCount; j++) {
    UILocalNotification *notific = [[[UIApplication sharedApplication] scheduledLocalNotifications] objectAtIndex:j];
    NSLog(@"notificBefore = %@ and j = %i", [notific.userInfo objectForKey:@"notif"], j+1);
    if ([notific.userInfo objectForKey:@"notif"] != [NSString stringWithFormat:@"%i", j+1]) {
        [[UIApplication sharedApplication] cancelLocalNotification:notific];
        NSDictionary *infoDict = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%i", j+1] forKey:@"notif"];
        [notific setUserInfo:infoDict];
        NSLog(@"notificEnd = %@", [notific.userInfo objectForKey:@"notif"]);
        [[UIApplication sharedApplication] scheduleLocalNotification:notific];
    }
}
Run Code Online (Sandbox Code Playgroud)