我有一个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
currentuser
。我的问题出在步骤5:
当我在else中执行任务时,“解析”中的列如下所示:
[[“”参与者1“],”参与者2“]
但是我想要这样:
[“参与者1”,“参与者2”]
我尝试过的事情:
我尝试过像这样放置数组的事情。 [newParticipantsArray addObject:[[objects objectAtIndex:i] valueForKey:@"Participants"]];
和类似的组合,当然没有运气。
答案 0 :(得分:1)
很难确定,因为我看不到您的数据结构,但是您确定其中的值是
[[objects objectAtIndex:i] valueForKey: @“Participants”]
是一个用户而不是一个用户数组吗?复数键“参与者”似乎表明它是一系列用户,也可以解释您得到的结果。
答案 1 :(得分:0)
如果实际上为“参与者”键返回的值是一个数组,则可以通过执行以下操作将其中的对象添加到可变数组中:
this.setState(
{
openA:true
},
() => {
this.setState({
openB: false
})
}
)
这使用NSArray* participants = [[objects objectAtIndex:i] valueForKey:@"Participants"]
[newParticipantsArray addObjectsInArray:participants];
的{{3}}方法将旧数组中的对象添加到新数组中。