I fixed the issue. I just added conditional sort descriptor method as per the data type of dictionary. And in Data_array dictionary where data going to added.Add data in proper data type. like if data is numbers then added these in dictionary as a number / float or NSDate.
Now I check the the type of data coming in dictionary as per sorting column. And change the sorting selector (Compare for non string data and for string data used caseInsensitiveCompare:) And rest works fine.
Final mothod that works is now as ..
-(void)sortTableDataUsingSortKey:(NSString *)sortKey withAscending:(BOOL)isAscending {
NSSortDescriptor *sortDescriptor = nil;
if ([data_array count] && [[[data_array objectAtIndex:0] valueForKey:sortKey] isKindOfClass:[NSString class]]) {
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:isAscending selector:@selector(caseInsensitiveCompare:)];
}
else {
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:isAscending selector:@selector(compare:)];
}
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSArray *arrTemp = [[NSArray alloc] initWithArray:[data_array sortedArrayUsingDescriptors:sortDescriptors]];
[data_array count]?[data_array removeAllObjects]:NSLog(@"Datsource Table Not null");
[data_array addObjectsFromArray:arrTemp];
arrTemp = nil;
[_table_view reloadData];
}