我正在开发一个使用 Parse 作为服务器后端的 iOS 项目。作为我的代码的一部分,我有以下 saveInBackgroundWithBlock 嵌套块。
// 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]);
}
}];
}];
如您所见,代码主要是saveInBackgroundWithBlock:
嵌套在一起的 3 个块。
一切正常,直到第三块,它只是挂起。我知道这一点是因为 segue 没有被执行。
代码的主要思想是一个接一个地保存东西。换句话说,imageFile 是PFFile
先保存的,然后PFObject
保存 userPhoto,最后保存已预填充的 userProfile 和新PFObject
的作为它的一部分。此个人资料。
关于为什么会挂起的任何评论?如何在不导致挂起的情况下将对象连续保存到 Parse?
感谢您提前提供的帮助和时间。