Загрузка серии позиционно определенных файловых записей в класс - PullRequest
0 голосов
/ 23 февраля 2011

Как вы скоро увидите, я довольно плохо знаком с целью-c и мне нужна небольшая помощь.

Я пытаюсь прочитать файл с серией записей фиксированной длины (загруженный с мэйнфрейма) и загрузить каждую запись в экземпляр класса, а затем добавить этот экземпляр класса в массив. Давайте назовем этот класс CLASS_A. У меня есть второй класс, CLASS_B, который я обернул вокруг входного файла, у которого есть один метод для чтения файла в NSString, второй метод переходит к следующей записи в файле (перемещает указатель сразу за следующей '\ n' ) и другие методы используются для извлечения отдельных полей данных в возвращенные значения NSString. Есть также некоторые другие встроенные проверки, чтобы убедиться, что каждая выборка поля не выходит за пределы текущей записи. Возможно, немного суетливо, но поскольку это демонстрационная программа, мне все равно.

Я объявил несколько экземпляров CLASS_A и загрузил каждый экземпляр CLASS_A, используя методы, определенные для CLASS_B, а затем успешно загрузил эти экземпляры CLASS_A в массив. Хорошо. Я вижу их в отладчике и могу получить их, используя различные методы массива, которые делают это.

Теперь я хочу обобщить эту вещь, чтобы я мог настроить цикл и просто весело заполнить таблицу CLASS_A одной записью CLASS_A на запись входного файла, доступ к которой осуществляется различными методами в CLASS_B, пока у меня не закончатся входные записи. В моем рабочем примере я назвал около 5 экземпляров CLASS_A и добавил их в массив. Как мне избежать явного присвоения имен экземплярам CLASS_A и просто зацикливаться. Мне действительно все равно, какие имена у отдельных экземпляров CLASS_A ... они существуют для того, чтобы быть объединенными в таблицу и извлеченными, как того требуют другие части программы.

Любая помощь будет великолепна. Код немного длинноват для этого сайта, но если он полезен, я тоже могу опубликовать его.

1 Ответ

0 голосов
/ 23 февраля 2011

Классический способ сделать это состоит в том, чтобы иметь метод класса (те, которые начинаются с +), который принимает данные и передает заполненный экземпляр.

+ (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]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...