解析:PFUser子类总是返回<pfuser> object </pfuser>

时间:2014-05-08 15:01:08

标签: ios parsing subclassing

我有一个名为LPUser的PFUser的子类:

// 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)> {

}

1 个答案:

答案 0 :(得分:0)

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

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

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