在子类化PFUser时获取正确的类型

tgh*_*ghw 7 subclass objective-c ios parse-platform

我试图在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
Run Code Online (Sandbox Code Playgroud)

当我打电话时[MyUser currentUser],我回来的对象是类型PFUser,但不是类型MyUser.将其转换为MyUser*没有帮助,它只是在我尝试使用任何自定义属性时抛出错误"无法识别的选择器发送到实例0xce9c0c0",例如user.avatar在MyUser中定义的.

如何获取currentUser自定义类型的缓存对象?

tgh*_*ghw 20

密钥结果是注册子类和设置应用程序ID的顺序.

[Parse setApplicationId:@"FOO" clientKey:@"BAR"];
[MyUser registerSubclass];
Run Code Online (Sandbox Code Playgroud)

导致问题发生.但是,如果在注册子类后设置应用程序ID,它将按预期工作.

[MyUser registerSubclass];
[Parse setApplicationId:@"FOO" clientKey:@"BAR"];
Run Code Online (Sandbox Code Playgroud)

  • 这没有任何意义,但它的确有效!谢谢. (5认同)