2 つのオブジェクトを含む配列があります。各オブジェクトには「タイプ」キーがあります。そのキーの値の 1 つは「resource」で、もう 1 つは「crop」です。
その配列を並べ替えて、必要なタイプのオブジェクトのみを含む新しい配列を作成したいと思います。私はこのコードがそれをしたと思った...
-(NSArray*)getItemsOfType:(NSString *) type
{
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:type
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [templateObjects sortedArrayUsingDescriptors:sortDescriptors];
return sortedArray;
}
しかし、それがしているように見えるのは、現在の配列を何らかの順序でソートするだけです。その機能を変更して必要なことを行うにはどうすればよいですか? 「initWithKey:ascending:selector:」を使用する必要がありますか?
アップデート
上記のコードの上にこのコードを試してみました...
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"templateObjects.type like %@", type];
NSArray *newArray = [templateObjects filteredArrayUsingPredicate:predicate];
しかし、newArray が空のように見えるだけですか? @"templateObjects.type" の部分が間違っているような気がしますか?
更新 2
わかりました、このコードは私が必要とすることを行います..
-(NSArray*)getItemsOfType:(NSString *) type
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type CONTAINS[cd] %@", type];
NSArray *newArray = [templateObjects filteredArrayUsingPredicate:predicate];
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:type
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [newArray sortedArrayUsingDescriptors:sortDescriptors];
return sortedArray;
}