将信息添加到数据库Parse.com

时间:2014-04-16 15:51:43

标签: objective-c parse-platform

我正在尝试开发一个具有注册页面的应用程序,实际上我正在使用Parse.com作为数据库,我已经将PFUser用于(用户名,密码,电子邮件)并且它可以工作很好,但碰巧我在注册页面中有其他信息,如(名称,DOB和位置),所以当我添加它们时,我收到了一个错误:

* 由于未捕获的异常终止应用' NSInvalidArgumentException',原因:'无法在PFObject上使用nil作为键或值。使用NSNull作为值。

请注意,我有一个名为User的表(解析提供的默认值),我想将(名称,DOB和位置)添加到该表 User 但是我得到了该错误。

这是我的代码

- (void) Registeruser {

    PFUser *newUser = [PFUser user];
    newUser.username = UserNameS.text;
    newUser.email= EmailS.text;
    newUser.password=PasswordS.text;
    PFObject * newUser1 = [PFObject objectWithClassName:@"User"];
    newUser1[@"name"]= NameS.text;
    newUser1[@"gender"]= genderS.text;
    newUser1[@"Location"]=genderS.text;
    NSString *dateStr = DOBS.text;
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
   [dateFormat setDateStyle:NSDateFormatterLongStyle];
    [dateFormat setTimeStyle:NSDateFormatterShortStyle];
    NSDate *date = [dateFormat dateFromString:dateStr];

  newUser1[@"dateofBirth"]=date;


    [newUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (!error) {
            NSLog(@"Registration success!");
            UserNameS.text = nil;
            PasswordS.text = nil;
           EmailS.text = nil;
            NameS.text=nil;
           DOBS.text=nil;
           LocationS.text=nil;
            genderS.text=nil;
            [self performSegueWithIdentifier:@"login" sender:self];}
        else {
            NSLog(@"There was an error in registration");
        }}];}

1 个答案:

答案 0 :(得分:2)

问题是您尝试添加到PFObject的其中一个对象并不存在。我无法肯定地说,但我打赌你的问题就在这里:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateStyle:NSDateFormatterLongStyle];
[dateFormat setTimeStyle:NSDateFormatterShortStyle];
NSDate *date = [dateFormat dateFromString:dateStr];

newUser1[@"dateofBirth"] = date;

您确定日期设置正确吗?

在保存之前,请尝试NSLog以确保您的日期有效。如果没有重复,直到找到零值。我使用的一个技巧让我感觉更好是使用它:

此:

newUser1[@"name"]= NameS.text;
newUser1[@"gender"]= genderS.text;
newUser1[@"Location"]=genderS.text;

可能是:

if (NameS.text) newUser1[@"name"]= NameS.text;
if (genderS.text) newUser1[@"gender"]= genderS.text;

if (date) newUser1[@"dateofBirth"] = date;

if (objectYouWantToAdd) yourPFObject[@"someKey"] = objectYouWantToAdd;

这样,我们在尝试添加对象之前检查对象是否存在。