为什么从另一个NSArray插入对象时,我的NSMutable没有正确填充



我有一个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]);
}
}];

这就是该方法的工作原理:

  1. 创建PFQuery对象
  2. 在参与者类中查询特定的ObjectId
  3. 如果没有错误,那么我们创建一个NSMutable array
  4. 如果Parse中没有参与者,那么我们插入当前用户作为参与者
  5. 否则,在可变数组中插入所有参与者,并在数组末尾添加currentuser
  6. 然后再次上传到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];

这使用NSMutableArrayaddObjectsInArray:方法将旧数组中的对象添加到新数组中。

最新更新