我正在尝试在 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”,例如user.avatar
在 MyUser 中定义。
如何获取自定义类型的缓存 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/