gpt4 book ai didi

ios - 在 iOS 中解析嵌套的 saveInBackgroundWithBlock

转载 作者:行者123 更新时间:2023-11-28 20:12:05 24 4
gpt4 key购买 nike

我正在开发一个使用 Parse 作为服务器后端的 iOS 项目。作为我的代码的一部分,我有以下 saveInBackgroundWithBlock 嵌套 block 。

// Save PFFile
[imageFile saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
...
[userPhoto saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
self.profileDictionary[@"picture"] = userPhoto;

NSLog(@"%@", self.profileDictionary);

NSMutableDictionary *userProfile = self.profileDictionary;

[[PFUser currentUser] setObject:userProfile forKey:@"profile"];
[[PFUser currentUser] saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
NSLog(@"Saving User Profile Succeded\n\n\n\n");
// If user's info is saved, then let's just segue to the actual app
[self performSegueWithIdentifier:@"profileToMain" sender:self];
} else {
// Log details of the failure
NSLog(@"Error while saving profile: %@ %@", error, [error userInfo]);
}
}];
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}];

可以看到,代码主要是3个saveInBackgroundWithBlock: block 嵌套在一起。

一切正常,直到第三个 block ,它才挂起。我知道这是因为 segue 没有执行。

代码的主要思想是一个接一个地保存东西。换句话说,imageFile 是一个首先被保存的 PFFile,然后是一个 userPhoto PFObject 被保存,最后是 userProfile,它已经被预填充了。将新的 PFObject 作为其中的一部分。此配置文件。

关于为什么挂起的任何评论?我怎样才能在不导致挂起的情况下实现将对象保存到 Parse 的连续性?

非常感谢您提前提供的帮助和时间。

最佳答案

有时对我有用的不是嵌套,而是 PFObject SaveAll 功能,您可以传入一个对象数组,这些对象按照它们在数组中出现的顺序保存,然后它们将全部保存,您仍然可以执行嵌套 block 代码一旦他们都成功。

[PFObject saveAllInBackground:@[Object1, Object2] block:^(BOOL succeeded, NSError *error) {
if(succeeded){
//Your code to execute once finished
}

}

关于ios - 在 iOS 中解析嵌套的 saveInBackgroundWithBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850987/

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