保存解析对象仅适用于变通方法

时间:2014-07-16 01:32:02

标签: ios parse-platform

我遇到了将对象保存到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];

2 个答案:

答案 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对象?如果你指向对方,至少要保存一个。