2012-01-30 55 views
1

在Objective c中,计算机从coredata生成.h文件。我不想更改该文件。如何在不更改原始.h或.m文件的情况下将私有变量添加到类中

不过,我想每个对象有外coredata

例如一些其他对象的引用,在企业核心数据对象,我想单元中的数据的引用表示业务的核心数据对象。

我该怎么做?

+0

查看chuck对其中一个答案的评论。更改生成的代码文件是你期望的。你为什么不想那么做,或者为什么你不能那样做?看看所有的模板项目 - 如果你没有改变任何“生成”的代码,你就不会走的很远。 – jrturton 2012-01-31 06:30:39

回答

1

里面的.m文件,你可以做到以下几点:

@interface YourClass() { 
    @private: 

    NSString *someVariable; 
} 
@end 

@implementation YourClass 

-(void)viewDidLoad { 
    someVariable = @"asdf"; 
} 

@end 
+0

我不想更改.m文件,因为它会自动生成 – 2012-01-30 14:06:24

+0

您可以为您的类创建一个类别,然后在其中添加该变量。查看http://stackoverflow.com/questions/4146183/instance-variables-for-objective-c-categories – shawnwall 2012-01-30 15:22:35

+2

@JimThio:为什么文件自动生成的事实让你不愿意改变它?这并不意味着神圣不可侵犯。 Xcode有助于为您生成大量的样板*,并期望您将其更改*。 – Chuck 2012-01-31 06:06:14

1

即使@private关键字不是绝对必要作出someVariable私人在shawnwall以上(因为已经获得了私人性质的答案通过在实现文件内部的空类别接口声明中),你的问题似乎揭示了MVC模式的可能中断。真正的数据对象可能会被单元中的某些东西所关注?

+0

好吧,我在数据库中使用了customCell。 customcell包含指向业务的箭头。当有人移动iPhone我想箭头更新并旋转图像。这意味着我需要对UIImage的引用。 – 2012-01-30 14:07:23

1

我认为你应该重新考虑你的设计,不可能将实例变量添加到现有的类而不修改它。

可以将方法添加到现有类中,而无需使用类别修改原始源,但它听起来不像您想要的那样。

2

为什么不继承?

NSManagedObject -> 
    MONObjectWithAnIvar { var } -> 
    MONModeledObject 
1

在obj-c中,您不能在外部修改现有类的成员。一种解决方法是使外部字典customCellarrow连接。然后,您可以获得arrow作为密钥customCell的对象。

相关问题