1
我有一个存储在后端服务器(解析)中的键值为@“titleLabel”的对象数组(图像)。我想要做的是在pickerView中显示标题列表,但我只想为每个键匹配的@“titleLabels”组显示一个标题。例如:如果我有五个具有titleLabel键的对象(图像):'Spring Break',我只想显示标题'Spring Break'的一个实例,而不是全部五个。我写的代码是我解决这个问题的最佳业余选择,但是我的NSLog for'titles array count'返回值为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];
我想起来之前转换为NSMutableArray的,但它抛出“不兼容的块指针” ...的错误,因为我的知识有限,我不完全明白。我明白为什么它需要可变,但不是如何更新已经写好的代码。另外,我在解析中发现了一个'addUniqueObjectsFromArray:forKey:'操作,并试图实现它,但即使这样也不能正常工作。有什么建议? –
这里有几个问题。你试过我的代码吗?此外,你不能分配(NSArray *)从arrayByAddingObject返回到NSMutableArray。这就是为什么我建议你使用字典对象,关于使用字典最好的部分是你可以添加一个数组对象到相应的键“springBreak”。因此,所有与春假相对应的图像都在同一个地方。 –
我陷害了。是的,但它引发了一个错误'不兼容的指针类型发送'PFObject *'到类型'NSString'的参数在这一行的关键字符串'[dict setValue:obj forKey:key];'我一直没有能够解决它。我有点得到你对使用字典的看法,这正是我想要的......只是无法让它工作。 (只有大约一个半月的时间,自学了iOS,没有任何编程经验,至少还是学会说) –