从 NSDictionary 检索键/值对会导致数据不正确并崩溃

Posted

技术标签:

【中文标题】从 NSDictionary 检索键/值对会导致数据不正确并崩溃【英文标题】:retrieving key/value pairs from NSDictionary leads to incorrect data and also crash 【发布时间】:2012-01-18 06:56:58 【问题描述】:

我的字典包含两个键值对日期/文本..这里的日期也是字符串格式,现在我正在提取键和值并将其传递给其他函数..以下面的方式

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.timeStyle = NSDateFormatterNoStyle;

    dateFormatter.dateFormat = @"dd-MMM-yyyy";     

        keys   = [Dictionary allKeys];
        values = [m_dateNoteDict allValues];

        for(int i = 0 ; i<[keys count]; i++)
                    
            NSString *notes   = [values objectAtIndex:i];
            NSDate *noteDate  = [dateFormatter dateFromString:[keys objectAtIndex:i]];


            NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
            NSDateComponents *weekdayComponents = [gregorian components:(NSDayCalendarUnit | NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit)fromDate:[self getCurrentDate]];

            NSInteger year  = [weekdayComponents year];


            [gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
            NSDateComponents *timeZoneComps=[[NSDateComponents alloc] init];

            [timeZoneComps setYear:year];
            [timeZoneComps setHour:00];
            [timeZoneComps setMinute:00];
            [timeZoneComps setSecond:01];

            noteDate =[gregorian dateFromComponents:timeZoneComps];         

            [self saveNotes:0 :noteDate :notes];//passing the date to this function
            NSLog(@"dates:%@",noteDate);
         

我的字典包含两个日期,即 1 月 1 日和 1 月 3 日..但是每次我遍历循环时,只有第一个 jan 被传递,而 3rd jan 没有被传递,所以,朋友们,请帮助我了解在哪里我错了..有时它会崩溃..

问候 兰吉特

【问题讨论】:

【参考方案1】:

我认为不是

keys = [Dictionary allKeys];

你打算使用:

keys = [m_dateNoteDict allKeys];

【讨论】:

是的,抱歉,即是拼写错误

以上是关于从 NSDictionary 检索键/值对会导致数据不正确并崩溃的主要内容,如果未能解决你的问题,请参考以下文章

从给定键值对的字典数组中过滤 NSDictionary

从 NSDictionaries 数组中获取键/值对

在 Swift 中对 NSDictionary 对象的 NSArray 进行排序

从 NSDictionary 检索数据

CouchApp 无法从视图中检索键/值对,但 Futon 可以

Redis设计与实现3 哈希对象( ziplist /hashtable)