繁体   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