解析:PFUser子类始终返回<PFUser>对象



我有一个PFUser的子类LPUser:

// LPUser.h
#import <Parse/Parse.h>
@interface LPUser : PFUser<PFSubclassing>
@property (retain) NSString firstName;
@property (retain) NSString lastName;
 + (LPUser *)currentUser;
@end

// LPUser.m
#import "LPUser.h"
#import <Parse/PFObject+Subclass.h>
@implementation LPUser
@dynamic firstName;
@dynamic lastName;
+ (LPUser *)currentUser
{
    return (LPUser *)[PFUser currentUser];
}
@end

// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [LPUser registerSubclass];
    [Parse setApplicationId:@"<< APP ID >>"
                  clientKey:@" << CLIENT KEY >>"];
    return YES;
}

我的问题是任何调用LPUser (currentUser, user或object)都返回一个PFUser对象而不是LPUser..即使我把它转换成LPUser user = (LPUser*)[LPUser object]

我在设置子类时做错了什么?

我得到这个当我NSLog用户:

2014-05-08 13:46:39.879[21529:60b] user: <PFUser:new:(null)> {
}

return (LPUser *)[PFUser currentUser]不创建新对象,而只是转发PFUser类从其+currentUser类方法返回的任何内容。

由于在您的代码中没有该方法的代码,我认为它要么返回一个静态PFUser实例,可能由同一类上的setCurrentUser方法设置。

无论如何,LPUserPFUser都返回相同的对象,因此您不能为当前实现的每个对象拥有不同的类实例。

相关内容

最新更新