Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在不更改原始.h或.m文件的情况下向类添加私有变量_Objective C_Xcode - Fatal编程技术网

Objective c 如何在不更改原始.h或.m文件的情况下向类添加私有变量

Objective c 如何在不更改原始.h或.m文件的情况下向类添加私有变量,objective-c,xcode,Objective C,Xcode,在目标c中,这台计算机从coredata生成.h文件。我不想更改该文件 但是,我希望每个对象都有对coredata之外的其他对象的引用 例如,在业务核心数据对象中,我希望引用表示该业务核心数据对象的单元数据 如何执行此操作?在.m文件中,您可以执行以下操作: @interface YourClass() { @private: NSString *someVariable; } @end @implementation YourClass -(void)viewDidLoa

在目标c中,这台计算机从coredata生成.h文件。我不想更改该文件

但是,我希望每个对象都有对coredata之外的其他对象的引用

例如,在业务核心数据对象中,我希望引用表示该业务核心数据对象的单元数据


如何执行此操作?

在.m文件中,您可以执行以下操作:

@interface YourClass() {
    @private:

    NSString *someVariable;
}
@end

@implementation YourClass

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

@end

在.m文件中,您可以执行以下操作:

@interface YourClass() {
    @private:

    NSString *someVariable;
}
@end

@implementation YourClass

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

@end

即使
@private
关键字对于在上面shawnwall的答案中使
某个变量
私有不是绝对必要的(因为私有字符已经通过在实现文件中的空类别接口声明中获得),您的问题似乎揭示了MVC模式的可能突破。数据对象与单元格中的某些内容真正相关的是什么?

即使在上面shawnwall的回答中,
@private
关键字对于使
某个变量
私有不是绝对必要的(因为私有字符已经在实现文件中的空类别接口声明中获得),您的问题似乎揭示了MVC模式的可能中断。单元格中的某些内容可能真正与数据对象有关吗?

我认为您应该重新考虑您的设计,在不修改现有类的情况下向现有类添加实例变量是不可能的


可以在不使用类别修改原始源代码的情况下向现有类添加方法,但听起来这不是您想要做的。

我认为您应该重新考虑您的设计,在不修改现有类的情况下向现有类添加实例变量是不可能的

可以在不使用类别修改原始源代码的情况下向现有类添加方法,但听起来您不想这样做。

为什么不使用继承

NSManagedObject ->
  MONObjectWithAnIvar { var } ->
    MONModeledObject
为什么不继承呢

NSManagedObject ->
  MONObjectWithAnIvar { var } ->
    MONModeledObject

在obj-c中,您不能从外部修改现有类的成员。一个解决方案是将
customCell
的外部字典与
arrow
链接。然后您可以将
arrow
作为键
customCell

的对象。在obj-c中,您不能从外部修改现有类的成员。一个解决方案是方法是保持
customCell
的外部字典与
arrow
链接。然后您可以将
arrow
作为key
customCell
的对象。我也不想更改.m文件,因为它是自动生成的。您可以为类创建一个类别,然后在那里添加变量。请参阅@JimThio:Wh是的,文件是自动生成的,这一事实是否让您不愿意更改它?它并不意味着神圣不可侵犯。Xcode为您生成了很多样板文件,希望您能够更改它。哦,真的吗?如果我再次更改coredata,我将重新插入相同的更改?也许我应该把重点放在r在coredata中,但coredata不接受指针类型。我也不想更改.m文件,因为它是自动生成的。您可以为您的类创建一个类别,然后在其中添加变量。请参阅@JimThio:为什么自动生成文件的事实会使您不愿意更改它?这并不意味着要以某种方式更改它Sacrosinct.Xcode为您生成了很多样板文件,希望您能够对其进行更改。哦,真的吗?如果我再次更改coredata,我将重新嵌入相同的更改?也许我应该将指针放在coredata中,但coredata不接受指针类型。嗯,我在数据库中使用了customCell。customCell包含指向业务的箭头。当有人移动iphone时,我希望箭头更新和旋转图像。这意味着我需要对UIImage的引用。我在数据库中使用了customCell。customCell包含一个指向业务的箭头。当有人移动iphone时,我希望箭头更新和旋转图像。这就是我ans我需要一个UIImage的引用。请参阅chucks对其中一个答案的评论。更改生成的代码文件是您最期待的。您为什么不想这样做,或者为什么不能这样做?看看所有的模板项目-如果您不更改任何“生成的”代码文件,您不会走得很远代码。请参阅Chuck对其中一个答案的评论。更改生成的代码文件是您最期待的。为什么您不想这样做,或者为什么您不能这样做?看看所有的模板项目-如果您不更改任何“生成”的代码,您不会走得很远。