バックエンド サーバー (解析) に格納された @"titleLabel" のキー値を持つオブジェクト (画像) の配列があります。私がやろうとしているのは、pickerView にタイトルのリストを表示することですが、キーが一致する @"titleLabels" のグループごとに 1 つのタイトルのみを表示したいと考えています。例: titleLabel キー: 'Spring Break' を持つ 5 つのオブジェクト (画像) がある場合、タイトル 'Spring Break' の 1 つのインスタンスのみを表示し、5 つすべてを表示したくはありません。私が書いたコードは、それを解決するための私の最高のアマチュアショットですが、「タイトル配列カウント」の NSLog は値 1 を返し、値をログに記録すると、すべてのタイトルが再び取得されます。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
PFQuery *query = [PFQuery queryWithClassName:@"Images"];
[query whereKey:@"recipientIds" equalTo:[[PFUser currentUser] objectId]];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error) {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
else {
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
for(id obj in self.objectsArray){
PFObject *key = [self.objectsArray valueForKey:@"titleLabel"];
if(![dict objectForKey:key]){
[dict setValue:obj forKey:key];
}
}
for (id key in dict) {
NSLog(@"key: %@, value: %@ \n", key, [dict objectForKey:key]);
NSLog(@"Objects array is %d", [self.objectsArray count]);
NSLog(@"Titles array is %d", [self.titlesArray count]);
}
[self.pickerView reloadComponent:0];
}
}];
そして、ここで別のコントローラーでキーを定義します。
PFObject *image = [PFObject objectWithClassName:@"Images"];
[image setObject:self.releaseDate forKey:@"releaseDate"];
[image setObject:file forKey:@"file"];
[image setObject:fileType forKey:@"fileType"];
[image setObject:title forKey:@"titleLabel"];
[image setObject:deadline forKey:@"deadline"];
[image setObject:self.recipients forKey:@"recipientIds"];
[image setObject:[[PFUser currentUser] objectId] forKey:@"senderId"];
[image setObject:[[PFUser currentUser] username] forKey:@"senderName"];
[image saveInBackground];