On Mar 26, 2013, at 1:12 AM, Diederik Meijer | Ten Horses wrote:

> But I'd like to know if there is a quicker or more efficient way to do this, 
> with less code. If so, please let me know.



More efficient, yes. Better? Different way to look at it at least:


NSArray * orderedHits = [[result valueForKeyPath:@"hits.hits"] 
sortedArrayUsingComparator:^(id a, id b){
        NSString * aDate = [a 
valueForKeyPath:@"_source.datum_gepubliceerd_ymd"];
        NSString * bDate = [b 
valueForKeyPath:@"_source.datum_gepubliceerd_ymd"];
        return [bDate compare:aDate options:NSNumericSearch];
}];

NSMutableArray * dates = [NSMutableArray array];
NSMutableArray * content = [NSMutableArray array];
NSMutableArray * contentForCurrentDate = nil;
NSDate * currentDate = nil;

for (NSDictionary * dict in orderedHits) {
        NSString * date = [dict 
valueForKeyPath:@"_source.datum_gepubliceerd_ymd"];
        if (date) {
                if (date != currentDate) {
                        contentForCurrentDate = [NSMutableArray array];
                        [content addObject:contentForCurrentDate];
                        [dates addObject:date];
                }
                
                [contentForCurrentDate addObject:dict];
        }
}

self.dates = dates;
self.content = contentByDate;



Also, it's generally a very bad idea to expose a mutable container in a 
property (ie, your self.datesArray and self.sortedJSONContent). You will hate 
yourself later if you run into one of several problems you can easily get 
yourself into. For example, you can easily mutate the container behind an 
object's back which can lead to it exploding, and you also lose KVO 
compatibility. It's better to expose an immutable container and possibly 
convenience methods to mutate (of either the KVC variety, or ones that at least 
will/didChangeKey: manually).


--
Seth Willits





_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to