我有一个PFQuery
,它获取特定事件的当前参与者:
PFQuery *getcurrentparticipants = [PFQuery queryWithClassName:@"Event"];
[getcurrentparticipants selectKeys:@[@"Participants"]];
[getcurrentparticipants whereKey:@"objectId" equalTo:ObjectID];
[getcurrentparticipants findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableArray *newParticipantsArray = [[NSMutableArray alloc]init];
if([objects[0] valueForKey:@"Participants"] == nil){ // If object retrieved in objects is null. If there are 0 participants
[newParticipantsArray addObject:PFUser.currentUser.username];
PFQuery *query = [PFQuery queryWithClassName:@"Event"];
[query getObjectInBackgroundWithId:self.ObjectID
block:^(PFObject *Event, NSError *error) {
Event[@"Participants"] = newParticipantsArray;
[Event incrementKey:@"Vacants" byAmount:[NSNumber numberWithInt:-1]];
[Event saveInBackground];
}];
}else{ // STEP 5
for(int i=0;i<objects.count;i++) {
[newParticipantsArray addObject:[[objects objectAtIndex:i] valueForKey:@"Participants"]];
}
[newParticipantsArray addObject:PFUser.currentUser.username];
NSLog(@"Part to upload %@", newParticipantsArray);
PFQuery *query = [PFQuery queryWithClassName:@"Event"];
[query getObjectInBackgroundWithId:self.ObjectID
block:^(PFObject *Event, NSError *error) {
Event[@"Participants"] = newParticipantsArray;
[Event incrementKey:@"Vacants" byAmount:[NSNumber numberWithInt:-1]];
[Event saveInBackground];
}];
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
这就是该方法的工作原理:
- 创建
PFQuery
对象 - 在参与者类中查询特定的
ObjectId
- 如果没有错误,那么我们创建一个
NSMutable array
- 如果Parse中没有参与者,那么我们插入当前用户作为参与者
- 否则,在可变数组中插入所有参与者,并在数组末尾添加
currentuser
- 然后再次上传到Parse
我的问题在第5步:
当我在else中执行任务时,Parse中的列如下所示:
[["参与者1"],"参与者2"]
但我希望它是这样的:
["参与者1","参与者2"]
我尝试过的内容:
我试过像这样放置数组。[newParticipantsArray addObject:[[objects objectAtIndex:i] valueForKey:@"Participants"]];
和类似的组合,当然没有运气。
很难说,因为我看不到你的数据结构,但你确定中的值吗
[[objects objectAtIndex:i] valueForKey: @“Participants”]
单个用户而不是其本身是一组用户吗?复数键的"参与者"似乎表明这是一组用户,他们也可以解释你得到的结果。
如果"Participants"键返回的值实际上是一个数组,则可以通过执行以下操作将其中的对象添加到可变数组中:
NSArray* participants = [[objects objectAtIndex:i] valueForKey:@"Participants"]
[newParticipantsArray addObjectsInArray:participants];
这使用NSMutableArray
的addObjectsInArray:
方法将旧数组中的对象添加到新数组中。