This is due to the fact that
PFUser objects are subclasses of PFObject
- unboxing logic checks for
PFObject (which catches both PFObjects and PFUsers) before testing for PFUser.
..
// Lastly, if this class is a PFObject or PFUser and it is registered, instantiate the appropriate ParseModel...
else if ([object isKindOfClass:[PFObject class]]) {
// *** PFUser FALLS IN TO THIS CASE
NSString *unboxedClassString = (self.registeredParseModels)[[(PFObject *) object parseClassName]];
if (unboxedClassString.length) {
unboxedObject = [(ParseModel *) [NSClassFromString(unboxedClassString) alloc] initWithParseObject:object];
}
}
else if ([object isKindOfClass:[PFUser class]]) {
// *** CODE NEVER GETS HERE
NSString *unboxedClassString = (self.registeredParseUsers)[[(PFUser *) object parseClassName]];
if (unboxedClassString.length) {
unboxedObject = [(ParseModelUser *) [NSClassFromString(unboxedClassString) alloc] initWithParseUser:object];
}
}
This means the latter branch will never be reached. They need to be reversed.
This is due to the fact that
PFUserobjects are subclasses ofPFObjectPFObject(which catches bothPFObjects andPFUsers) before testing forPFUser... // Lastly, if this class is a PFObject or PFUser and it is registered, instantiate the appropriate ParseModel... else if ([object isKindOfClass:[PFObject class]]) { // *** PFUser FALLS IN TO THIS CASE NSString *unboxedClassString = (self.registeredParseModels)[[(PFObject *) object parseClassName]]; if (unboxedClassString.length) { unboxedObject = [(ParseModel *) [NSClassFromString(unboxedClassString) alloc] initWithParseObject:object]; } } else if ([object isKindOfClass:[PFUser class]]) { // *** CODE NEVER GETS HERE NSString *unboxedClassString = (self.registeredParseUsers)[[(PFUser *) object parseClassName]]; if (unboxedClassString.length) { unboxedObject = [(ParseModelUser *) [NSClassFromString(unboxedClassString) alloc] initWithParseUser:object]; } }This means the latter branch will never be reached. They need to be reversed.