我的.h文件中有这个typedef
typedef struct
{
NSInteger openTime;
NSInteger closeTime;
} ShopHours;
现在我想在我的.m文件中声明它,然后就像你想在整个.m中使用的NSString一样。
所以基本上我想初始化它,作为typedef的数组然后我可以在我的viewDidLoad方法中为它分配一个vaule,我觉得合适。
所以基本上我想声明它像
ShopHours weekSchedule[] = {};
然后在viewDidLoad
中weekSchedule[] = {//my data}
但是当我尝试声明并使用它时,我得到了编译错误
Field has incomplete type 'SHopHours[]'
感谢您的帮助
答案 0 :(得分:0)
编译器需要知道weekSchedule变量有多大,以便为它放置一些内存。你可以将它声明为shopHours weekSchedule [7]。
答案 1 :(得分:0)
我试过,问题是你需要首先取消数组的大小:
@interface LoginScreen (){
ShopHours aa[5];
}
- (void)viewDidLoad
{
[super viewDidLoad];
for (int i = 0; i < 5; i++) {
aa[i].closeTime = 5+i;
aa[i].openTime = 10 + i;
}
}
在我记录的另一种方法中:
for (int i = 0; i < 5; i++) {
NSLog(@"Open Time %ld\n",(long)aa[i].openTime);
NSLog(@"Close Time %ld\n",(long)aa[i].closeTime);
}
工作得很好。
如果你想要动态内存分配,你可以这样做
@interface LoginScreen (){
ShopHours *aa;
}
- (void)viewDidLoad
{
[super viewDidLoad];
aa = malloc(sizeof(ShopHours) * 5);
for (int i = 0; i < 5; i++) {
aa[i].closeTime = 5+i;
aa[i].openTime = 10 + i;
}
}
希望这有助于......:)