Please note this is for OSX, not for iOS.
I have looked and tried some solutions in other SO questions, but none seem to work for me, hence this:
I want to get a unique set of years out of an array.
My code is this:
NSMutableArray * unique = [NSMutableArray array];
NSMutableSet * processed = [NSMutableSet set];
for (yearString in yearStringArray) {
if (![processed containsObject:yearString] == NO) {
[unique addObject:yearString];
}
[processed addObject:yearString];
}
NSLog(@"unique: %@",unique );
NSLog(@"processed: %@",processed );
}];
The console returns:
unique: (
(
1941,
1942,
1943,
1945,
1948,
1948,
1948,
1949
)
processed: {(
(
1941,
1942,
1943,
1945,
1948,
1948,
1948,
1949
)
)}
I only want one 1948. I would appreciate any help.
UPDATES: Thanks for the answers all. Keep em coming please!!!
These are the code snips I've tried now:
1.
for (yearString in yearStringArray) {
if ([processed containsObject:yearString] == NO) {
[unique addObject:yearString];
}
[processed addObject:yearString];
}
2.
NSString *yearString = [[NSString alloc] init];
NSArray *objectArray = [[NSArray alloc] init];
[objectArray = objects copy];
for (int j = 0; j <= objectArray.count; j++) {
NSString *yearString = [objectArray valueForKey:@"year"];
[yearStringArray addObject:yearString];
}
NSMutableArray * unique = [NSMutableArray array];
NSMutableSet * processed = [NSMutableSet set];
for (yearString in yearStringArray) {
[unique addObject:yearString];
[processed addObject:yearString];
}
NSArray *processed2 = [[NSSet setWithArray:unique] allObjects];
NSLog(@"unique: %@",unique );
NSLog(@"processed: %@",processed );
NSLog(@"processed2: %@",processed2 );
//[self setYears];
}];
3.
NSString *yearString = [[NSString alloc] init];
NSArray *objectArray = [[NSArray alloc] init];
[objectArray = objects copy];
for (int j = 0; j <= objectArray.count; j++) {
yearString = [objectArray valueForKey:@"year"];
[yearStringArray addObject:yearString];
}
NSArray *uniqueYears = [yearStringArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
NSLog(@"uniqueYears: %@", uniqueYears);
}];
}
Still not getting unique years..