これは iOS 用ではなく、OSX 用であることに注意してください。
私は他のSOの質問でいくつかの解決策を見て試しましたが、どれもうまくいかないようです。
配列から一意の年のセットを取得したい。
私のコードはこれです:
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
)
)}
1948 が 1 つだけ欲しいのですが、助けていただければ幸いです。
更新:すべての回答に感謝します。来てください!
これらは私が今試したコードスニップです:
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);
}];
}
まだ一意の年を取得していません..