我遇到了将对象保存到Parse的以下问题。 出于某种原因,在第一个代码段中保存对象时,Parse会挂起。该应用程序不会崩溃,它只是永远加载。
另一方面,如果我们以第二种方式保存东西,它就有效。什么是疯狂的是它是相同的对象。
PFObject *huddle = request[SHRequestHuddleKey];
[huddle fetch];
Student *student1 = request[SHRequestStudent1Key];
[student1 fetch];
[student1 addObject:huddle forKey:SHStudentHuddlesKey];
[huddle addObject:student1 forKey:SHHuddleMembersKey];
[huddle saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
NSLog(@"Complete save huddle");
}];
[student1 saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
NSLog(@"complete save student");
}]
PFObject *huddle = request[SHRequestHuddleKey];
[huddle fetchIfNeeded];
PFObject *student1 = request[SHRequestStudent1Key];
[student1 fetchIfNeeded];
NSString* s1ID = [student1 objectId];
PFQuery *query = [Student query];
PFObject* student = [query getObjectWithId:s1ID];
[huddle addObject:student forKey:SHHuddleMembersKey];
[huddle save];
NSString* huddleID = [huddle objectId];
PFQuery *huddleQuery = [PFQuery queryWithClassName:@"Huddles"];
PFObject* huddle2 = [huddleQuery getObjectWithId:huddleID];
[student addObject:huddle2 forKey:SHStudentHuddlesKey];
[student save];
答案 0 :(得分:0)
您是否尝试过添加:
if(error){
NSLog(@"Whatever");
}else{
NSLog(@"Complete save huddle"); //You have 2 NSLogs here in your code BTW
}
之间:
[huddle saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
//Add code above here
}];
只是为了看你是否收到错误?我的意思是,抱歉,如果这听起来很荒谬,但我也是初学者,只是想帮忙!
答案 1 :(得分:0)
因为你将student1分配给一个密钥,你只需要保存一下就可以了。它将遍历所有相关对象并保存student1。您也可以使用saveAll并传入一个解析对象的NSArray来保存。
由于它们是异步的,因此您最初使用它的方式可能会导致一些真正的冲突。两个保存开始并尝试保存两个对象。
是否已经保存了huddle和student1对象?如果你指向对方,至少要保存一个。