iOS - 核心数据 - 保存包含对象数组的对象
iOS - Core Data - Saving an object that contains an array of Objects
我刚刚开始使用 Core data,(我也在尝试使用 Magical Record)。我正在创建一个非常简单的付款跟踪应用程序。
我想保存一个包含债务人数组的付款对象。这就是我的付款对象的样子
@class Debtor;
@interface Payment : NSObject
@property (strong, nonatomic) NSString *paymentAmountString;
@property (strong, nonatomic) NSString *titleString;
@property (strong, nonatomic) NSArray *debtorsArray;
@property (strong, nonatomic) NSDate *dueDate;
@property (strong, nonatomic) NSString *notesString;
@end
而 debtorsArray 是一个 Debtor 对象数组
@interface Debtor : NSObject
@property (strong, nonatomic) NSString *nameString;
@property (strong, nonatomic) NSString *amountOwedString;
我应该如何保存这个对象,因为它包含一个数组。我是否需要创建两个不同的实体,在付款和债务人之间建立关系?我究竟该怎么做,以及如何确保它们被正确获取?
只为 Payment
创建一个实体。您必须在此实体中为属性 debtorsArray
使用“Transformable”数据类型。
然后在您的 Debtor
class 中实现以下方法:
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.nameString forKey:@"nameString"];
[aCoder encodeObject:self.amountOwnedString forKey:@"amountOwnedString"];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
if(self = [super init]){
self.nameString = [aDecoder decodeObjectForKey:@"nameString"];
self.amountOwnedString = [aDecoder decodeObjectForKey:@"amountOwnedString"];
}
return self;
}
应该像任何其他提取查询一样正常提取实体。
希望对您有所帮助。
我刚刚开始使用 Core data,(我也在尝试使用 Magical Record)。我正在创建一个非常简单的付款跟踪应用程序。
我想保存一个包含债务人数组的付款对象。这就是我的付款对象的样子
@class Debtor;
@interface Payment : NSObject
@property (strong, nonatomic) NSString *paymentAmountString;
@property (strong, nonatomic) NSString *titleString;
@property (strong, nonatomic) NSArray *debtorsArray;
@property (strong, nonatomic) NSDate *dueDate;
@property (strong, nonatomic) NSString *notesString;
@end
而 debtorsArray 是一个 Debtor 对象数组
@interface Debtor : NSObject
@property (strong, nonatomic) NSString *nameString;
@property (strong, nonatomic) NSString *amountOwedString;
我应该如何保存这个对象,因为它包含一个数组。我是否需要创建两个不同的实体,在付款和债务人之间建立关系?我究竟该怎么做,以及如何确保它们被正确获取?
只为 Payment
创建一个实体。您必须在此实体中为属性 debtorsArray
使用“Transformable”数据类型。
然后在您的 Debtor
class 中实现以下方法:
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.nameString forKey:@"nameString"];
[aCoder encodeObject:self.amountOwnedString forKey:@"amountOwnedString"];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
if(self = [super init]){
self.nameString = [aDecoder decodeObjectForKey:@"nameString"];
self.amountOwnedString = [aDecoder decodeObjectForKey:@"amountOwnedString"];
}
return self;
}
应该像任何其他提取查询一样正常提取实体。
希望对您有所帮助。