将一系列位置定义的文件记录加载到类中

时间:2011-02-23 04:11:33

标签: objective-c class file nsmutablearray

正如你很快就能看到的那样,我对objective-c很新,需要一些帮助。

我正在尝试读取其上有一系列固定长度记录的文件(从大型机下载)并将每个条目加载到类实例中,然后将该类实例添加到数组中。我们称之为CLASS_A类。我有一个第二类,CLASS_B,它已经包含在输入文件中,有一个方法将文件读入NSString,第二个方法前进到文件中的下一个记录(将指针移到下一个'\ n') )和其他方法用于将单个数据字段提取到返回的NSString值。还有一些其他嵌入式检查,以确保每个字段提取不会超出当前记录。可能有点挑剔,但由于这是一个演示程序,我不在乎。

我声明了几个CLASS_A实例并使用为CLASS_B定义的方法加载了CLASS_A的每个实例,然后成功地将这些CLASS_A实例加载到一个数组中。精细。我可以在调试器中看到它们,并可以使用各种数组方法来获取它们。

现在我想概括一下这个东西,所以我可以设置一个循环,只需用CLASS_B中的各种方法访问每个输入文件记录,用一个CLASS_A条目快速填充CLASS_A表,直到我用完输入记录。在我的工作示例中,我明确地命名了大约5个CLASS_A实例,并将它们添加到数组中。如何摆脱显式命名CLASS_A实例并绕过循环。我真的不在乎单个CLASS_A实例的名称是什么......它们存在捆绑到表中并根据程序的其他部分的要求提取出来。

任何帮助都会很棒。该网站的代码有点长,但如果它有用,我也可以发布它。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种经典方法是使用一个类方法(以+开头的方法)接收数据,然后移交填充的实例。

+ (CLASS_A *) class_aFromStringArray: (NSArray *)stringArray {
   CLASS_A *myInstance = [[CLASS_A alloc] init];

   //Populate myInstance ivars here from stringArray

   [myInstance autorelease];
   return myInstance;
}

在你的其他课程中,你的循环就像

一样
   while (FileNotEOF) {
     peel off a line;
     parse line into (NSMutableArray *) aMutableArray;
     [myClass_AArray addObject: [CLASS_A class_aFromStringArray: aMutableArray]];
}