在我的应用程序中,我构建了一个Web服务来处理本地化而不是苹果的默认机制。
Web服务返回3个实体
@interface MPLanguageCode : NSManagedObject
@property (nonatomic, retain) NSDate * createdAt;
@property (nonatomic, retain) NSString * objectId;
@property (nonatomic, retain) NSNumber * syncStatus;
@property (nonatomic, retain) NSDate * updatedAt;
@property (nonatomic, retain) NSNumber * lcID;
@property (nonatomic, retain) NSString * lcValue;
@interface MPTranslationKey : NSManagedObject
@property (nonatomic, retain) NSDate * createdAt;
@property (nonatomic, retain) NSString * objectId;
@property (nonatomic, retain) NSNumber * syncStatus;
@property (nonatomic, retain) NSDate * updatedAt;
@property (nonatomic, retain) NSNumber * keyID;
@property (nonatomic, retain) NSString * keyValue;
@interface MPTranslationValue : NSManagedObject
@property (nonatomic, retain) NSDate * createdAt;
@property (nonatomic, retain) NSNumber * keyID;
@property (nonatomic, retain) NSNumber * lcId;
@property (nonatomic, retain) NSString * objectId;
@property (nonatomic, retain) NSNumber * syncStatus;
@property (nonatomic, retain) NSString * translation;
@property (nonatomic, retain) NSDate * updatedAt;
三个实体之间绝对没有关系,但是当我需要我的本地化的翻译价值时,我需要有效地查询这三个实体。
在示例中:假设我知道设备区域设置为“en”,并且我需要关键字“home_button”的英文翻译。由于MPTranslationValue
包含区域设置ID和密钥ID,因此我不能仅使用该实体来获取实际的转换。相反,我需要一种方法来获取“en”的区域设置ID获取“home_button”的keyID,并使用它们来搜索MPTranslationValue
实体中的实际翻译。如果我使用SQL,我可以使用连接来获得一行查询结果。但是在核心数据中,我似乎找不到完美的方法来做到这一点,而不会分别从所有3个实体获取请求。
解决这个问题的最佳方法是什么?