Filed under: Programming

Shameless Plug

(download)

I just wanted to take a second to let everyone know about Countdown, an application developed by myself which is available in the Apple App Store.

The purpose of countdown is simple, you enter a date and it shows you a countdown to that date and notifies you when the date is imminent. It supports multiple dates, local notifications and advanced user interface customisation.

What's more it is totally free and available now! Grab your copy today!!!

http://itunes.apple.com/gb/app/countdown/id343020892?mt=8

Sorting a NSMutableArray Randomly - Shuffle

Earlier today, I had a situation where I needed the contents of a NSMutableArrray in a random order.

There are many way in which this could be achieved, however I decided to build a Category onto NSMutableArray itself to aid in the reuse of the code, and to provide some features out of the box because the project I was actually developing was a static library for use in other project.
I am posting the code here in case anyone else finds it useful, and so I know where it is, should I ever need it again in the future.
interface:
//  NSMutableArray_Shuffling.h
//  Created by Mick Walker on 11/04/2011.
//
 
#if TARGET_OS_IPHONE
#import "UIKit/UIKit.h"
#else
#include <Cocoa/Cocoa.h>
#endif
 
 
@interface NSMutableArray (Shuffling)
- (void) shuffle;
@end

implementation:
//  NSMutableArray_Shuffling.m
//  Created by Mick Walker on 11/04/2011.
//
 
#import "NSMutableArray_Shuffling.h"
 
 
@implementation NSMutableArray (Shuffling)
 
-(void) shuffle {
    NSUInteger count = [self count];
    for(NSUInteger i = 0; i < count; i++){
        int nElements = count -1;
        int n = (arc4random() %nElements) + 1;
        [self exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}
@end

Using the code is simple, simply import the header file:
#import "NSMutableArray_Shuffling.h"

And then on an initialised NSMutableArray object call:
[someArray shuffle];
I hope that this post helps someone.