子类化PFUser。访问当前用户

时间:2014-08-08 00:15:38

标签: ios objective-c parse-platform

我试图继承PFUser,因为我想添加一些属性,但我还需要[MyUserSubclass currentUser]返回MyUserSubclass而不是PFUser实例。

我目前的代码是这样的:

+ (instancetype)currentClient {
    MyUserSubclass *client = [MyUserSubclass objectWithoutDataWithObjectId:[PFUser currentUser].objectId];
    [client fetch];
    return client;
}

在方法[客户端获取]时,我的应用程序崩溃,控制台收到警告:无法刷新尚未保存到服务器的对象。

请帮忙。

1 个答案:

答案 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