我的应用程序首先允许用户使用他们的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];
}
}];
}
}];
}
}];
}
答案 0 :(得分:0)
您要保存的其中一项必须为null / nil。断点每次保存并检查对象的值。如果其中一个是nill,则意味着该对象不会保存。