我试图继承PFUser,因为我想添加一些属性,但我还需要[MyUserSubclass currentUser]返回MyUserSubclass而不是PFUser实例。
我目前的代码是这样的:
+ (instancetype)currentClient {
MyUserSubclass *client = [MyUserSubclass objectWithoutDataWithObjectId:[PFUser currentUser].objectId];
[client fetch];
return client;
}
在方法[客户端获取]时,我的应用程序崩溃,控制台收到警告:无法刷新尚未保存到服务器的对象。
请帮忙。
答案 0 :(得分:2)
如果您在Parse库中检查PFUser.h
,则会看到currentUser
返回instancetype
。
+ (instancetype)currentUser;
这意味着如果您继承PFUser
,那么currentUser
将返回子类类型的对象,在您的情况下为MyUserSubclass
。
以下是子类化PFUser
的简短示例:
User.h
#import <Parse/Parse.h>
@interface User : PFUser <PFSubclassing>
@property (nonatomic, strong) NSString *firstName;
+ (User *)user;
+ (BOOL)isLoggedIn;
@end
User.m
#import "User.h"
#import <Parse/PFObject+Subclass.h>
@implementation User
@dynamic firstName;
+ (User *)user {
return (User *)[PFUser user];
}
+ (BOOL)isLoggedIn
{
return [User currentUser] ? YES: NO;
}
@end
请注意,我需要实施+(User *)user;
方法,因为在PFUser.h
中它是+(PFUser *)user;
而不是instancetype
。