我创建了一些与 CoreData 一起使用的 NSManagedObject 类,我需要添加一些附加属性来格式化我正在使用的GR小胡子 https://github.com/groue/GRMustache模板。
这是一个示例属性:
-(NSString *) PriceFormatted {
NSNumberFormatter *nfm = [[[NSNumberFormatter alloc] init] autorelease];
[nfm setNumberStyle:NSNumberFormatterCurrencyStyle];
[nfm setCurrencyCode:[Helpers GetCurrencyCode]];
[nfm setNegativeFormat:@"-¤#,##0.00"];
[nfm setMaximumFractionDigits:2];
return [nfm stringFromNumber:self.Price];
}
我目前在生成的 NSManagedObject 类中有这个,但是如果我需要重新生成新的 NSManagedObject 类,这会导致问题。
我可以在辅助类集中定义这些属性吗 - 类似于 C# 中的部分?
也许最简单的方法是将类别添加到生成的托管对象中。
Here http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1这是苹果公司的文档,非常简单。
去引用:
您可以通过在接口文件中声明方法来将方法添加到类中
在类别名称下并在实现文件中定义它们
同名下。类别名称表明方法是
对在其他地方声明的类的添加,而不是新类。你不能,
但是,使用类别将其他实例变量添加到
班级。
类别添加的方法成为类类型的一部分。为了
例如,添加到类别中 NSArray 类的方法包括在内
作为编译器期望 NSArray 实例在其实例中包含的方法
剧目。然而,在子类中添加到 NSArray 类的方法,
不包含在 NSArray 类型中。 (这仅对
静态类型对象,因为静态类型是唯一的方式
编译器可以知道对象的类。)
类别方法可以执行类中定义的方法的任何操作
适当的可以做。在运行时,没有区别。方法
添加到类中的类别会被该类的所有类继承
子类,就像其他方法一样。
类别接口的声明看起来非常像一个类
接口声明 - 类别名称除外
类名和超类后面的括号没有提及。
除非它的方法不访问类的任何实例变量,
该类别必须为其扩展的类导入接口文件:
#import "ClassName.h"
@interface ClassName ( CategoryName )
// method declarations
@end
请注意,类别不能声明额外的
类的实例变量;它仅包含方法。然而,
类范围内的所有实例变量也在
该类别的范围。这包括所有实例变量
由类声明,甚至声明为@private。
您可以添加到的类别数量没有限制
类,但每个类别名称必须不同,并且每个类别都应该
声明并定义一组不同的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)