Given the following code:
+(Tag *) addNewTagwithName:(NSString *)tagName Error:(NSError **)addError {
AppDelegate *delegate = (AppDelegate *) [[UIApplication sharedApplication]delegate];
Tag *newTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:delegate.managedObjectContext];
newTag.tagName = tagName;
//no error save to parse
PFObject *tag = [PFObject objectWithClassName:@"Tag"];
tag[@"tagName"] = newTag.tagName;
[tag saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if(error) {
*addError = error;
} else {
dispatch_async(dispatch_get_main_queue(), ^{
NSError *error = nil;
newTag.tagId = tag.objectId;
if(![delegate.managedObjectContext save:&error]) {
*addError = error;
}
});
}
}];
return newTag;
}
what are some methods to ensure that newTag is returned only AFTER newTag.tagId = tag.objectId is executed?