Spa*_*Dog 3 cocoa-touch core-data nsfetchedresultscontroller nsmanagedobject ios
核心数据实体的瞬态和派生属性之间有什么区别?我想创建一个"虚拟"属性,可以在获取操作中使用该属性从核心数据实体返回本地化的国家/地区名称.
操作将以这种方式完成:
2将由这个"虚拟"属性完成.
我应该使用哪一个?瞬态或衍生的,我该怎么做?
我没有什么可以告诉你的,因为我不知道我应该使用什么.
谢谢
根据Apple的非标准持久属性指南:
通过使用可转换属性或使用transient属性表示受支持的持久属性支持的非标准属性,可以将非标准类型用于持久属性.这两种方法背后的原理是相同的:您向实体的消费者呈现您想要的类型的属性,并在"幕后"将其转换为Core Data可以管理的类型.这些方法之间的区别在于,对于可转换属性,您只需指定一个属性,并自动处理转换.相反,对于瞬态属性,您可以指定两个属性,并且必须编写代码才能执行转换.
我建议使用瞬态属性.想法是你创建了2个字符串属性:countryName(非瞬态)和localizedCountryName(transient):

然后,在NSManagedObjectSubclass中,您只需为localizedCountryName实现一个getter:
- (NSString *)localizedCountryName
{
NSString *result;
if ([self.countryName length] > 0) {
result = NSLocalizedString(self.countryName, nil);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4239 次 |
| 最近记录: |