簡體   English   中英

導致NSInternalInconsistencyException的已注冊子類的PFQuery

[英]PFQuery of a registered subclass causing an NSInternalInconsistencyException

到目前為止,我在Parse上度過了一段愉快的時光。 我目前在下面有一段代碼。

// Retrieve all ride requests
PFQuery *query = [RideRequest query];
[query includeKey:@"customer"];
[query whereKey:@"status" equalTo:@(RIDE_REQUESTED)];
[query orderByDescending:@"numberOfPeople"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    rides = objects;
}];

由於收到未捕獲的異常“ NSInternalInconsistencyException”,我收到以下錯誤終止應用程序,因此從未輸入以上代碼:原因:“鍵“ numberOfPeople”沒有數據。 在獲取其值之前,先調用fetchIfNeeded。

RideRequest是一個注冊的子類。 您將在以下基本形式中看到類接口。

@class User
@interface RideRequest : PFObject<PFSubclassing>

@property (nonatomic, strong) User *customer;
@property (nonatomic) int status;
@property (nonatomic, strong) NSString *numberOfPeople;

用戶是PFUser的注冊子類。

@class RideRequest
@interface User : PFUser<PFSubclassing>

@property (nonatomic, strong) RideRequest *rideRequest;

我還有其他子類化的pfobjects,執行PFQuery時沒有任何問題,但是這些子類都沒有對User(PFUser的子類)的引用。 我假設這可能與我看到此問題的原因有關。 我不確定為什么要調用鍵“ numberOfPeople”。 它不是指向PFObject的指針。 因此有點混亂。 任何幫助將不勝感激。

解決了我自己的問題。 我在自定義PFObject子類上覆蓋了init方法。 從實現中刪除-(instancetype)init方法並添加自己的自定義初始化程序有助於解決此問題。 事實證明,PFQuery在為其返回的NSArray生成對象時會在其實現中調用init方法(或者至少這是它似乎正在做的事情)。

另外請注意,我注意到從模擬器進行調試比從設備進行調試給了我更詳細的堆棧跟蹤。 不知道這是否與解析有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM