Ios Parse.com。不保存自定义子类属性。网间网操作系统
我的UserFavorite类如下所示:Ios Parse.com。不保存自定义子类属性。网间网操作系统,ios,objective-c,parse-platform,Ios,Objective C,Parse Platform,我的UserFavorite类如下所示: UserFavourite.h #import <Foundation/Foundation.h> #import <Parse/Parse.h> #import "Product.h" @interface UserFavourite : PFObject <PFSubclassing> @property (nonatomic, copy) Product* product; @property (nona
UserFavourite.h
#import <Foundation/Foundation.h>
#import <Parse/Parse.h>
#import "Product.h"
@interface UserFavourite : PFObject <PFSubclassing>
@property (nonatomic, copy) Product* product;
@property (nonatomic, copy) PFUser* user;
+(NSString *)parseClassName;
-(id)initWithProducts:(Product*)product
user:(PFUser *)user;
@end
UserFavourite.m
#import "UserFavourite.h"
#import <Parse/PFObject+Subclass.h>
@implementation UserFavourite
@dynamic product, user;
+(NSString *)parseClassName {
return @"UserFavourite";
}
-(id)initWithProducts:(Product*)product
user:(PFUser *)user{
self = [super init];
if (self) {
self.product = product;
self.user = user;
}
return self;
}
@end
我想将其保存到Parse server,但这些属性没有保存到表中,如图所示:
我也在AppDelegate中初始化了这个子类。
我做错了什么?
谢谢。对
GetObjectInBackgroundHithid
的调用是一个异步方法调用。对saveinbackgroundithblock
的以下调用将在前一个调用完成之前调用,即在对其进行任何修改之前保存uf
若要解决此问题,请将保存移到上面的完成块。我在AppDelegate中执行所有操作,并且我注意到在进行调试时,执行不会超过GetObjectInBackgroundHitid的第一行。它实际上甚至不做任何修改。我真的不理解这种情况。另外,您需要确保用户已登录,[PFUser currentUser}不是nil。
//Getting product from Parse
PFQuery *query = [PFQuery queryWithClassName:@"Product"];
UserFavourite *uf = [[UserFavourite alloc] init];
[query getObjectInBackgroundWithId:@"NhKrnlzeeN" block:^(PFObject *product1, NSError *error) {
[uf setUser:[PFUser currentUser]];
Product* pr = [[Product alloc] init];
pr.name = [product1 objectForKey:@"name"];
pr.category = [product1 objectForKey:@"category"];
pr.price = [product1 objectForKey:@"price"];
pr.ingridients = [product1 objectForKey:@"ingridients"];
pr.protein = [product1 objectForKey:@"protein"];
pr.fats = [[product1 objectForKey:@"fats"] integerValue];
pr.carbo = [[product1 objectForKey:@"carbo"] integerValue];
pr.calories = [[product1 objectForKey:@"calories"] integerValue];
pr.likes = [[product1 objectForKey:@"likes"] integerValue];
pr.quantity = [[product1 objectForKey:@"quantity"] integerValue];
pr.status = [[product1 objectForKey:@"status"] integerValue];
pr.objectId = product1.objectId;
[uf setProduct:pr];
NSLog(@"uf %@", uf);
}];
[uf saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
// The object has been saved.
} else {
NSLog(@"Error: %@", error.description);
}
}];