我有一个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
方法设置。
无论如何,LPUser
和PFUser
都返回相同的对象,因此您不能为当前实现的每个对象拥有不同的类实例。