我正在尝试在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/

10-11 01:48