【发布时间】:2018-11-09 23:22:58
【问题描述】:
我有一个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"]]; 和类似的组合,当然没有运气。
【问题讨论】:
标签: ios objective-c parse-platform nsmutablearray