我试图将整个NSManagedObjects数组加载到NSArray中,然后使用整数迭代器在点击按钮时遍历数组。 xCode似乎不喜欢在.h中声明整数和NSArray,然后在.m中使用不同的方法。
我想知道经验丰富的开发人员在解决此类问题时应采取的适当方法。
流程将是: 1.将数据加载到数组中。 2.使用索引0处的信息设置标签.int i = 0; 3.用户点击按钮; i ++,检索索引1处的元素。
等等,直到数组结束,或者用户停止点击按钮。
编辑:
这是可行的代码,但我觉得不对:
XYZViewController.h
@interface XYZViewController : UIViewController <NSFetchedResultsControllerDelegate>{
int index;
}
XYZViewController.m
import "XYZViewController.h"
- (void)function1{
index = 0;
}
- (void)function2{
index++;
}
-(void)function3{
NSManagedObject *obj = [results objectAtIndex:index];
}
这实际上是对的吗?它有效但不优雅;完全没有。
答案 0 :(得分:1)
你是否在类外的.h文件中声明了整数和NSArray?如果是这样,它将在包含该文件的每个编译模块中定义,这导致链接时的多个符号=&gt;错误。
解决方案:如果只需要一个.m文件中的NSArray / int,请将它们移动到那里。否则在.h中将它们声明为extern
,并在正好1 .m文件中定义它们,如下所示:
// 1.h
extern int myInt;
// 1.m
#include "1.h"
int myInt;
// Use myInt
// 2.m
#include "1.h"
// Use myInt
答案 1 :(得分:1)
您编写的代码是正确的,因为您希望尽可能保持变量的可见性。在这种情况下,您似乎只需要XYZViewController.m
文件中的此变量。实际上,您可能需要考虑使用@private
作为前缀,以使其对其他单位更不可见。