我有类Compose
和Haiku
,每个都连接到IB中的视图控制器。 Haiku
中的Compose
被ghhaiku
实例化为Haiku
。 self.arrayOfHaiku
有一个数组,Compose
,有117个成员。但在self.ghhaiku.arrayOfHaiku
中,Haiku
没有成员。
我认为问题在于我没有将具有117个成员数组的Haiku
实例与Compose
中创建的Haiku.m
实例相关联。但是我该怎么做?
(我当然可能完全错了,问题可能是别的,但这看起来很直观。)
有什么想法吗?
修改
-(void)viewDidLoad
{
[super viewDidLoad];
[self.arrayOfHaiku addObjectsFromArray:userH];
NSLog(@"%d",self.arrayOfHaiku.count); //This logs 117.
[self goToNextHaiku];
}
包含以下代码:
Compose.h
@property (strong, nonatomic) Haiku *ghhaiku;
包含第Compose.m
行
@synthesize ghhaiku;
- (void)viewDidLoad
{
[super viewDidLoad];
//Lots of other code
NSLog(@"%d",self.ghhaiku.arrayOfHaiku.count); //this logs 0.
}
包含以下代码:
{{1}}
答案 0 :(得分:1)
好的,你永远不会初始化ghaiku,只是定义它。另外为什么ha句有一个viewDidLoad方法?基本上你需要做类似的事情:
self.ghhaiku = [[Haiku alloc] initWithData:SOME_ARRAY];
在你的Compose.m
中只是一个假设,如果Haiku
只是一个模型类,你不应该将它用作view / viewcontroller。就像一个NSObject。然后就做:
-(id)initWithData:(NSArray*)data{
self = [super init];
if(self){
self.arrayOfHaiku = data;
}
return self;
}
请记住在Haiku.h
-(id)initWithData:(NSArray*)data;
先阅读
好吧,我原本误解了你在做什么,但我认为你仍然应该制作一个Haikus
单身人士课程(我会更新上面的代码,以便稍后当我有更多时间 - 或者你可以谷歌时),然后调用{每个视图控制器中都有{1}}。
答案 1 :(得分:1)
你可以试试这个......
//haiku.h
//haiku.m
-(NSArray *)initHaikuMembers
{
return([[NSArray alloc] initWithObjects.....]);
}
//compose.h
//compose.m
haiku *ghaiku = [[haiku alloc] init];
NSArray *myHaikuArray = [ghaiku initHaikuMembers];
通过这种方式,您可以在Compose中多次实例化Haiku类,并在需要时随意初始化它们。如果你需要操作myHaikuArray中的数据,你可以允许Haiku类完成所有的工作。