Xcode:无法使用PFObject向行添加行

时间:2015-06-11 11:36:28

标签: ios objective-c parse-platform

我的应用程序首先允许用户使用他们的facebook凭据登录,用户是在我的Parse User类中创建的。这已经成功地为已经测试过我的应用的多个用户提供了支持。

其中一个用户可以通过PFObject将项目添加到名为“Items”的类中,但其他用户无法添加任何项目。这是我用来上传对象的代码:

- (void)uploadItem {
NSString *title = self.itemTitle.text;
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *price = [f numberFromString:self.itemPrice.text];
NSString *description = self.itemDescription.text;
NSString *category = self.category;
NSData *data;
NSNumber *mobileNo = [f numberFromString:self.mobileNo.text];
NSString *name;
NSString *userName = [[PFUser currentUser]username];

if ([FBSDKAccessToken currentAccessToken]) {
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"fetched user:%@", result);

             _fullName = [result objectForKey:@"name"];
             _firstName = [result objectForKey:@"first_name"];
            _lastName = [result objectForKey:@"last_name"];
             _gender = [result objectForKey:@"gender"];
             _userID = [result objectForKey:@"id"];
             _locale = [result objectForKey:@"locale"];
             _email = [result objectForKey:@"email"];

         }
     }];
}

    UIImage *newImage = [self resizeImage:self.image toWidth:320.0f andHeight:480.0f];
    data = UIImagePNGRepresentation(newImage);
    name = @"image.png";


PFFile *file = [PFFile fileWithName:name data:data];
[file saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (error) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An error occurred!"
                                                            message:@"Please try sending your message again."
                                                           delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];
    } else {
        PFObject *item = [PFObject objectWithClassName:@"Items"];
        [item setObject:file forKey:@"file"];
        [item setObject:title forKey:@"itemTitle"];
        [item setObject:mobileNo forKey:@"MobileNo"];
        [item setObject:price forKey:@"itemPrice"];
        [item setObject:description forKey:@"itemDescription"];
        [item setObject:category forKey:@"itemCategory"];
        [item setObject:[[PFUser currentUser] objectId] forKey:@"uploaderId"];
        [item setObject:userName forKey:@"uploaderIdFB"];
        [item setObject:_firstName forKey:@"FirstName"];
        [item setObject:_lastName forKey:@"LastName"];
        [item setObject:_fullName forKey:@"FullName"];
        [item setObject:_gender forKey:@"Gender"];
        [item setObject:_userID forKey:@"UserID"];
        [item setObject:_locale forKey:@"Locale"];
        [item setObject:_email forKey:@"Email"];

        [item saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
            if (error) {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An error occurred!"
                                                                    message:@"Please try sending your message again."
                                                                   delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alertView show];
            } else {
                // Success.
                self.image = nil;
                PFQuery *query = [PFQuery queryWithClassName:@"Categories"];
                [query whereKey:@"category" equalTo:category];
                [query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
                    if (error) {
                        NSLog(@"Error: %@ %@", error, [error userInfo]);
                    } else {
                        NSNumber *items = [object objectForKey:@"items"];
                        items = [NSNumber numberWithInt:([items intValue] + 1)];
                        [object setObject:items forKey:@"items"];
                        [object saveInBackground];
                    }
                }];
            }
        }];
    }
}];
}

1 个答案:

答案 0 :(得分:0)

您要保存的其中一项必须为null / nil。断点每次保存并检查对象的值。如果其中一个是nill,则意味着该对象不会保存。