gpt4 book ai didi

ios - 完成一个街区后返回?

转载 作者:行者123 更新时间:2023-11-29 03:21:57 25 4
gpt4 key购买 nike

给定以下代码:

+(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;

}

有哪些方法可以确保仅在执行 newTag.tagId = tag.objectId 后才返回 newTag?

最佳答案

这是不可能的。因为 addNewTagwithName: 方法会立即返回,但完成 block 将在稍后执行并且它什么都没有。

更新:试试下面的代码...

+(void) addNewTagwithName:(NSString *)tagName Error:(NSError **)addError completionBlock:(CompletionBlock)comBlock {

//no error save to parse
PFObject *tag = [PFObject objectWithClassName:@"Tag"];
tag[@"tagName"] = tagName;

[tag saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if(error) {
*addError = error;
} else {
dispatch_async(dispatch_get_main_queue(), ^{
comBlock(succeeded,error);
if(![delegate.managedObjectContext save:&error]) {
*addError = error;
}
});
}
}];
}

你的方法调用应该是。

CompletionBlock currentTagBlock = ^(BOOL succeeded, NSError *error){
AppDelegate *delegate = (AppDelegate *) [[UIApplication sharedApplication]delegate];

Tag *newTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:delegate.managedObjectContext];
newTag.tagName = tagName;
if(!error);
newTag.tagId = tag.objectId;
/* Here you should write your code using tag
ex: [self processWithNewTag:newTag]; */

};
[Tag addNewTagwithName:tagName Error:&addError completionBlock:currentTagBlock];

关于ios - 完成一个街区后返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com