我正在尝试在iOS上的Parse中子类化PFUser。我可以使用以下代码创建子类:
// MyUser.h
#import <Parse/PFUser.h>
#import <Parse/PFObject+Subclass.h>
#import <Parse/PFFile.h>
@interface MyUser : PFUser<PFSubclassing>
@property PFFile *avatar;
...etc...
@end
// MyUser.m
#import "MyUser.h"
@implementation MyUser
@dynamic avatar;
...etc...
@end
当我调用
[MyUser currentUser]
时,我返回的对象是PFUser
类型的,但不是MyUser
类型的。将其强制转换为MyUser*
并没有帮助,当我尝试使用任何自定义属性时,它只会抛出错误“无法识别的选择器发送到实例0xce9c0c0”。 MyUser中定义的user.avatar
。如何获取自定义类型的缓存
currentUser
对象? 最佳答案
关键是注册子类和设置应用程序ID的顺序。
[Parse setApplicationId:@"FOO" clientKey:@"BAR"];
[MyUser registerSubclass];
导致问题发生。但是,如果您在注册子类后设置了应用程序ID,它会按预期工作。
[MyUser registerSubclass];
[Parse setApplicationId:@"FOO" clientKey:@"BAR"];
关于ios - 子类化PFUser时获取正确的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22203689/