2015-09-02 13 views
4

我有一個Meal對象,它使用鍵「MealItems」存儲指向n個創建對象「FoodInfo」的指針。錯誤:「include對非ParseObjects無效」(使用parse-osx-library-1.7.5)

當我查詢用餐時,我利用[查詢includeKey:@「MealItems」]來獲取提取「膳食」時指向的項目。

如果在線時創建對象(即全部存儲在雲數據庫中),則可以順利使用。

但是,因爲我無法在這個應用程序中始終假設訪問雲,所以我現在試圖啓用本地數據存儲,以便我更改了我的查詢以使用: [query fromLocalDatastore];

我將所有對象的保存方法更改爲pinInBackgroundWithBlock後面(假設本地保存成功)saveInBackgroundWithBlock後面(假設失敗)saveEventually。

爲了驗證這一點,我:

  • 關閉無線網絡
  • 運行代碼來創建一頓飯,然後新創建的食物添加到它。這適用於沒有錯誤代碼。
  • 運行一個報告,然後查詢剛創建的膳食。這種失敗的情況如下:
 
Error: Error Domain=Parse Code=121 
"include is invalid for non-ParseObjects" UserInfo=0x60800007f400 { 
    error=include is invalid for non-ParseObjects, 
    NSLocalizedDescription=include is invalid for non-ParseObjects, 
    code=121 
} { 
    NSLocalizedDescription = "include is invalid for non-ParseObjects"; 
    code = 121; 
    error = "include is invalid for non-ParseObjects"; 
} 

不支持這種情況?

當我重新啓用wifi時,用餐已成功添加到在線數據庫,但查詢失敗仍然發生在我本地使用includeKey運行查詢時。

我在這裏錯過了什麼嗎?我很驚訝看到這個失敗。這似乎是一個非常基本的功能,無論本地還是雲端,都應該可以工作。

+0

顯示您用於測試的代碼 – Wain

+1

基本問題不應要求顯示代碼。很顯然可以創建一個對象A,該對象包含指向其他對象的指針數組,並在離線時將它們全部固定到本地數據存儲區。在通過網絡保存任何對象之前,解析是否支持本地數據存儲查詢以檢索A以及通過包含鍵指向數組中的對象? – Gerald

+0

想知道如果這是在任何新版本上解決,或者如果你願意分享你的解決方法,如果有任何@Gerald。謝謝 –

回答

0

解析對象直到您保存它們纔會創建。在使用pinInBackgroundWithBlock之前先嚐試使用saveEventually

+1

在鎖定對象之前調用saveEventually(在沒有網絡連接的情況下)不會改變任何內容。這導致了上面報告的完全相同的錯誤。我猜測包含鍵失敗,因爲PFObject尚未被分配一個id,並且所述分配似乎不會在通過網絡連接保存對象之前發生。如果是這樣,這將使用includekey檢索1:n關係對於創建對象的脫機場景不可用,固定(並最終保存),然後通過使用包含鍵的查詢進行引用。 – Gerald