从核心数据进行循环

丹·帕切维奇(Dan Paschevici)

我有一个问题,我有2个数组(日期和描述),一个保留一个从datePicker中选择的日期,另一个是带有字符串的数组,两个数组都从CoreData获取。

-(void)generateLocalNotification {
    CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"AddEntrySettings"];
    fetchRequest.resultType = NSDictionaryResultType;
    NSArray *result = [coreDataStack.managedObjectContext executeFetchRequest:fetchRequest error:nil];
    NSMutableArray *date = [result valueForKey:@"date"];
    NSMutableArray *descriere = [result valueForKey:@"descriere"];`

    if (date != nil) {
        for (NSString *stringDate in date) {
            NSDateFormatter *format = [[NSDateFormatter alloc]init];
            [format setDateFormat:@"MM/dd/yyyy h:mm a"];
            [format setTimeZone:[NSTimeZone  timeZoneWithName:@"GMT"]];
            self.date = [format dateFromString:stringDate];
            NSLog(@"LOG:%@",date);
            localNotification.fireDate = [self.date dateByAddingTimeInterval:0];
            localNotification.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];

            for (int i = 0; i < descriere.count; i++) {
                localNotification.alertBody = descriere[i];
            }
            localNotification.applicationIconBadgeNumber = 1;
            localNotification.soundName = UILocalNotificationDefaultSoundName;
            localNotification.userInfo = @{@"id" : @42};

            UIApplication *app = [UIApplication sharedApplication];
            [app scheduleLocalNotification:localNotification];
        }
    }
}

当我尝试fireDate时,一切工作正常,每次当数组中的日期与本地时间匹配时,我会收到一条通知,直到尝试添加alertBody时,每次为alertBody进行for循环时,它只会显示我的最后一个条目NSArray。在CoreData中,我同时添加了两个条目。我的错误在哪里?我怎样才能每次都收到与我在CoreData中插入的日期相匹配的alertBody通知?

pbasdf

问题是这个for循环:

       for (int i = 0; i < descriere.count; i++) {
            localNotification.alertBody = descriere[i];
        }

每次都会stringDate迭代到您描述数组中的最后一项。您想要的是找到stringDatein的索引date,然后在in的相同索引处找到字符串descriere

但是,有一种更简单的方法。不要解包result到两个单独的数组中,只需从for循环中访问不同的值即可:

if (result != nil) {
    for (NSDictionary *dict in result) {
        NSString *stringDate = [dict objectForKey:@"date"];
        // if necessary, test whether stringDate is nil here
        NSDateFormatter *format = [[NSDateFormatter alloc]init];
        [format setDateFormat:@"MM/dd/yyyy h:mm a"];
        [format setTimeZone:[NSTimeZone  timeZoneWithName:@"GMT"]];
        self.date = [format dateFromString:stringDate];
        NSLog(@"LOG:%@",date);
        localNotification.fireDate = [self.date dateByAddingTimeInterval:0];
        localNotification.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];

        localNotification.alertBody = [dict objectForKey:@"descriere"];          
        localNotification.applicationIconBadgeNumber = 1;
        localNotification.soundName = UILocalNotificationDefaultSoundName;
        localNotification.userInfo = @{@"id" : @42};

        UIApplication *app = [UIApplication sharedApplication];
        [app scheduleLocalNotification:localNotification];
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用iCloud进行核心数据同步

来自分类Dev

使用核心数据进行应用设置

来自分类Dev

由于 FOR 循环,从数据库获取核心数据失败

来自分类Dev

正确的语法循环通过核心数据NSSet

来自分类Dev

Swift中的核心数据:在for循环中比较对象

来自分类Dev

核心数据安装

来自分类Dev

核心数据基础

来自分类Dev

Restkit的核心数据

来自分类Dev

CloudKit的核心数据

来自分类Dev

核心数据条件

来自分类Dev

测试核心数据

来自分类Dev

核心数据插入

来自分类Dev

按日期和字符对核心数据属性进行排序

来自分类Dev

对核心数据中的相关实体进行排序

来自分类Dev

对具有多个值的核心数据进行排序

来自分类Dev

使用获取的属性进行核心数据跨商店查询

来自分类Dev

枚举时对核心数据进行了变异

来自分类Dev

如何在GROUP BY之前对核心数据记录进行排序?

来自分类Dev

对核心数据中的相关实体进行排序

来自分类Dev

枚举时对核心数据进行了变异

来自分类Dev

如何根据输入的日期对核心数据数组进行排序

来自分类Dev

核心数据数据加密

来自分类Dev

原始核心数据与核心数据+神奇记录

来自分类Dev

Swift核心数据:核心数据中的枚举

来自分类Dev

原始核心数据与核心数据+神奇记录

来自分类Dev

iCloud设计的核心数据

来自分类Dev

核心数据提取属性

来自分类Dev

NSJSONSerialization到核心数据

来自分类Dev

是否使用核心数据?