2015-02-28 2 views
-1

У меня есть массив, который содержит дату. это мой массив.значение изменяемого массива, получающееся пустым

"2015-03-01", 
"2015-03-04", 
"2015-03-05", 
"2015-03-06", 
"2015-03-07", 
"2015-03-08", 
"2015-03-14", 
"2015-03-15" 

список значение в соответствии с этим date.my кодирования является

NSArray * datevalue = [tempArr valueForKey:@"match_formatted_date"]; 
       NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES]; 
       NSArray *descriptors = [NSArray arrayWithObject: descriptor]; 
       NSArray *reverseOrder = [datevalue sortedArrayUsingDescriptors:descriptors]; 

NSPredicate *findFutureDates = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind){ 
NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
        [df setDateFormat:@"yyyy-MM-dd"]; 
        [df setTimeZone:[NSTimeZone systemTimeZone]]; 
        NSDate *dd = [df dateFromString:(NSString *)obj ]; 
        return ([[NSDate date] compare:dd] == NSOrderedAscending); 
    }]; 

NSArray * arrFutureDates = [reverseOrder filteredArrayUsingPredicate: findFutureDates]; 
       NSLog(@"arrFutureDates:%@",arrFutureDates); 

for (id item in arrFutureDates) 
{ 
if (![dataArr containsObject:item]) 
         [dataArr addObject:item]; 
} 

[dataArr sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

for (int i= 0; i<[dataArr count]-1; i++) { 

        for (id item in tempArr) 
{ 
if([@"Mexico: Copa Mexico - Clausura" isEqualToString:[item valueForKey:@"league_name"]] 
          ||[@"Mexico: Liga De Ascenso - Clausura" isEqualToString:[item valueForKey:@"league_name"]] 
          ||[@"Mexico: Primera Division - Clausura" isEqualToString:[item valueForKey:@"league_name"]]) 

          if([[dataArr objectAtIndex:i]isEqualToString:[item valueForKey:@"match_formatted_date"]]) 
{ 
NSMutableDictionary *tempDic =[[NSMutableDictionary alloc]init]; 
           [tempDic setValue: [item valueForKey:@"match_formatted_date"] forKey:@"match_formatted_date"]; 
           [tempDic setValue: [item valueForKey:@"league_name"] forKey:@"league_name"]; 



if (![titleheader containsObject:tempDic]) 

{ 
[titleheader addObject:tempDic]; 
}}}} 

моя проблема: в заголовке заголовка нулевое значение приближается. Я сделал ошибку, может ли кто-нибудь мне помочь.

+0

Вы выделяете массив в свой метод '- (void) viewdidload'? –

+0

да, это находится в viewdidload –

+0

okh тогда проверьте RJV Kumar ответ. –

ответ

0

Проверьте свой код, вы не инициализировали заголовок в любом месте. В этом случае это будет только ноль. Перед проверкой состояния инициализируйте и присвойте некоторое значение заголовку заголовка. Или иначе я не знаю, что вы пропустили, чтобы вставить код.

+0

Я инициализировал заголовок заголовка как изменяемый массив в файле .h, я пропустил для вставки кода –

+0

ok. но где вы назначаете значение. Проверь это. –

0

Unreadable форматирования в сторону, есть несколько вопросов, в вашем коде, которые могут вызвать проблему:

NSArray* datevalue = [tempArr valueForKey:@"match_formatted_date"]; 

название, что tempArr является NSArray, однако вы обращаетесь как NSDictionary. Существует разница между методами -valueForKey: и -objectForKey:. Former - это метод NSObject, связанный с KVC, а последний - NSDictionary метод доступа к хранимым объектам. Они часто сбиты с толку, потому что они вызваны NSDictionary, они ведут себя одинаково.

for (int i= 0; i<[dataArr count]-1; i++) { 

Эта for петля пропускает последний объект в dataArr, который - я полагаю - не было задумано. Это можно исправить i < dataArr.count или i <= dataArr.count-1.

Еще одна проблема - не связана с проблемой, но возможность узнать:

NSMutableDictionary *tempDic =[[NSMutableDictionary alloc]init]; 
          [tempDic setValue: [item valueForKey:@"match_formatted_date"] forKey:@"match_formatted_date"]; 
          [tempDic setValue: [item valueForKey:@"league_name"] forKey:@"league_name"]; 


if (![titleheader containsObject:tempDic]) 

Объекты в контейнерах хранятся и сравниваются (по умолчанию) в качестве ссылок, таким образом, -containsObject всегда будет возвращать NO - даже если бы другой NSDictionary с теми же парами ключ-значение.

+0

спасибо брату, я исправлю свою ошибку. еще мой заголовок заголовка получает пустое значение –

+0

Можете ли вы опубликовать, как инициализируются данные dataArr, tempArr и titleheader? –

+0

dataarr - это вышеприведенный массив дат, temparr слишком большой, все из них инициализированы. Что я могу сделать сейчас –