As mentioned in my comments, copy the objects of the original array to a mutable array and shuffle it as:
NSUInteger count = [array count]; //array is the mutable copy of original array
for (NSUInteger i = 0; i < count; ++i) {
NSInteger elements = count - i;
NSInteger n = (arc4random() % elements) + i;
[array exchangeObjectAtIndex:i withObjectAtIndex:n];
}
Now you can access objects in array
one bye one and it will unique. You wont miss any objects as well.