2015-11-07 22 views
0

我試圖從iOS應用程序更新我的Parse.com類中的現有行。一旦這樣做,我是從解析收到此錯誤回:iOS Parse.com保存對象與指針列給出「用戶不允許」的錯誤

This user is not allowed to perform the update operation on City. You can change this setting in the Data Browser. (Code: 119, Version: 1.9.1) 

我有兩個Parse.com類:CityBarCity類是隻讀的(它是不會更改的城市列表),Bar類是用戶與之交互的類(如添加註釋,評分,菜單項等)。 BarCity上有一個Pointer列,Bar的權限全部爲公共用戶開啓。

下面是一個代碼片段:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    PFQuery *query = [PFQuery queryWithClassName:@"Bar"]; 
    self.bar = [query getObjectWithId:self.barId]; 
    self.bar.name = @"Foo"; 
    [self.bar saveInBackground]; 
} 

有關片段的一些注意事項:我在酒吧的ID通過賽格瑞傳遞從以前的視圖控制器。我也知道這是在主線程上運行Parse查詢,它會阻止...我現在只是簡單的原型,這是無意義的代碼。

運行該代碼段時,出現上面列出的錯誤。正如你在代碼中看到的,我沒有改變城市的價值,也沒有將它包括在查詢結果中。我不明白爲什麼我會得到這個錯誤。任何投入將不勝感激!

+0

看來你會有問題,因爲你不等待[查詢getObjectWithId:self.barId]來完成。因此,在準備好之前使用self.bar可能會失敗。這可能不是你的問題,但我認爲它可能對你有用。 – Michel

+0

它看起來像這個問題是由於我使用'objectWithoutDataWithClassName'實例化我的'城市'對象。似乎以這種方式實例化對象將髒標記設置爲true。因此,當我保存我的「酒吧」時,它也試圖保存我的「城市」,因爲它很髒。但'City'是隻讀的,因此是錯誤的。 – themanatuf

回答

0

試試這個代碼,看看2條NSLog的消息出現的順序,你希望:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    PFQuery *query = [PFQuery queryWithClassName:@"Bar"]; 
    //self.bar = [query getObjectWithId:self.barId]; 
    [query getObjectInBackgroundWithId:self.barId block:^(PFObject *result, NSError *error) { 
     NSLog(@"query has finished."); 
     self.bar = result[0]; 
    }]; 
    self.bar.name = @"Foo"; 
    NSLog(@"Now going to saveInBackground."); 
    [self.bar saveInBackground]; 
} 

再試試這個,我認爲它可能工作,雖然我不知道你的項目的所有細節:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    PFQuery *query = [PFQuery queryWithClassName:@"Bar"]; 
    //self.bar = [query getObjectWithId:self.barId]; 
    [query getObjectInBackgroundWithId:self.barId block:^(PFObject *result, NSError *error) { 
     self.bar = result[0]; // or result; ?? 
     self.bar.name = @"Foo"; 
     [self.bar saveInBackground]; 
    }]; 
} 
+0

感謝您的回答。看看我對我原來的問題的評論。使用'objectWithoutDataWithClassName'設置髒標誌(這是我用來生成我的'城市'對象)。現在我正在從Parse中提取值(而不是自己生成它們),這一切都按預期工作。 – themanatuf

+0

我很高興你能最終解決你的問題。 – Michel

相關問題