我有一个名为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)> {
}
答案 0 :(得分:0)
return (LPUser *)[PFUser currentUser]
不会创建新对象,只是转发PFUser
类从+currentUser
类方法返回的内容。
由于代码中没有该方法的代码,我认为它要么返回一个静态PFUser
实例,可能是由setCurrentUser
方法在同一个类上设置的。
无论如何,LPUser
和PFUser
都会返回相同的对象,因此您不能为当前实现的每个实例提供不同的类实例。