Review が coreDataModel のリレーションシップになる場合は、代わりに を使用NSMutableArray
しNSSet
て Restaurant Entity に接続してください。
レビュー中:
レストランで:
xcode にクラスを生成させると、次のようになります。
Restaurant:
@interface Restaurant : NSManagedObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSSet *user_reviews; /* One to Many Relation to Review Entity*/
@interface Restaurant(CoreDataGeneratedAccessors)
- (void)addUser_reviewsObject:(Review *)value;
- (void)removeUser_reviewsObject:(Review *)value;
- (void)addUser_reviews:(NSSet *)value;
- (void)removeUser_reviews:(NSSet *)value;
@end
Review:
@interface Review : NSManagedObject
@property (nonatomic, strong) NSString *rating;
@property (nonatomic, strong) NSString *review_text;
@property (nonatomic, strong) User *user;
@property (nonatomic, strong) Restaurant *restaurant;
@end
あなたの電話は次のとおりです。
NSManagedObjectContext *context = [self managedObjectContext];
Restaurant *rest = [NSEntityDescription insertNewObjectForEntityForName:@"Restaurant" inManagedObjectContext:context];
rest.name = restaurant.name;
Review *rev = [NSEntityDescription insertNewObjectForEntityForName:@"Review" inManagedObjectContext:context];
rev.rating = @"1";
rev.review_text = @"nomnomnom";
[rest addUser_reviewsObject:rev];
// or rev.restaurant = restaurant; one of both is enought as far as I remember
// save your context
編集
でなければならないとすればNSMutableArray
、それは合理化することはできません。
それらは常にNSSets
(x から n の場合) または宛先クラスです。を使用NSMutableArray
すると、セットと自動処理の利点が得られます。
しかし、本当に に保存したい場合は、少なくとも属性 (一意) でクラスNSMutableArray
を展開し、.Review
reviewID
NSMutableArray
Transformable
//Review:
@interface Review : NSManagedObject
@property (nonatomic, strong) NSString *rating;
@property (nonatomic, strong) NSString *review_text;
@property (nonatomic, strong) User *user;
@property (nonatomic, strong) NSNumber *reviewID;
@end
//Restaurant.h:
@interface Restaurant : NSManagedObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSSet *user_reviews; // Set of NSNumbers
- (void)addUser_reviewsObject:(Review *)value;
- (void)addUser_reviewsID:(NSNumber *)value;
- (void)removeUser_reviewsObject:(Review *)value;
- (void)addUser_reviews:(NSMutableArray *)value;
- (void)removeUser_reviews:(NSMutableArray *)value;
@end
//Restaurant.m:
- (void)addUser_reviewsObject:(Review *)value
{
[self addUser_reviewsID:value.reviewID];
}
- (void)addUser_reviewsID:(NSNumber *)value
{
if(![self.user_reviews containsObject:value];
[self.user_reviews addObject:value];
}
- (void)removeUser_reviewsObject:(NSNumber *)value
{
// follow upper logic and implement yourself
}
- (void)addUser_reviews:(NSMutableArray *)value
{
// follow upper logic and implement yourself
}
- (void)removeUser_reviews:(NSMutableArray *)value
{
// follow upper logic and implement yourself
}