子类化PFUser

时间:2015-05-29 10:07:29

标签: ios objective-c parse-platform xcode6 subclassing

我试图像这样继承PFUser:

//  User.h

#import <Parse/Parse.h>

@interface User : PFUser <PFSubclassing>

@property (nonatomic, copy) NSString *userUsername;
@property (nonatomic, copy) NSString *userPassword;
@property (nonatomic, copy) NSString *userEmail;

- (void)signUpUser;

@end

//  User.m

#import "User.h"
#import <Parse/PFObject+Subclass.h>

@implementation User

@dynamic userUsername;
@dynamic userPassword;
@dynamic userEmail;

- (void)signUpUser {
    [self signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (!error) {
            // Hooray! Let them use the app now.
            NSLog(@"Success");
        } else {
            NSString *errorString = [error userInfo][@"error"];   // Show the errorString somewhere and let the user try again.
            NSLog(@"Error: %@", errorString);
        }
    }];
}

@end

我然后这样做来创建一个新用户:

#pragma mark - IBActions

- (IBAction)signUpButtonClicked:(UIButton *)sender {
    // Sign up user with text from textfields.
    [self signUpUser:self.usernametextField.text password:self.passwordTextField.text email:self.emailTextField.text];
}

#pragma mark - Private

- (void)signUpUser:(NSString *)usernameString password:(NSString *)passwordString email:(NSString *)emailString {
    // Create a new user to sign up.
    User *user = [User user];
    user.username = usernameString;
    user.password = passwordString;
    user.email = emailString;
    [user signUpUser];
}

但为什么我会这样呢?我忘记了什么,或者我没有以正确的方式继承PFUser。该应用程序可以工作并创建一个新用户,但我真的不明白为什么我会收到此警告。

  

不兼容的指针类型初始化&#39;用户*&#39;表达的   输入&#39; PFUser * __nonnull&#39;

1 个答案:

答案 0 :(得分:2)

我假设您未在user课程中实施User方法。我建议您覆盖user方法以正确返回User类的实例。

在你的情况下发生了什么: 您可以像这样创建一个User实例

User *user = [User user];

但是你的user类中没有方法User所以你总是回到PFUser类来处理这个调用,你得到一个PFUser的实例这就是你得到警告的原因。

覆盖user课程中的User方法将解决问题。这样做:

+(User*)user {
    return (User*)[PFUser user];
}

希望这有帮助!