2011-02-23 20 views
0

正如您很快就會看到的,我對objective-c很新,需要一些幫助。將一系列位置定義的文件記錄加載到類中

我試圖讀取一個文件,它有一系列固定長度的記錄(從大型機下載),並將每個條目加載到類實例中,然後將該類實例添加到數組中。我們稱之爲CLASS_A類。我有第二個類,CLASS_B,它包裹了輸入文件,它有一個方法將文件讀入NSString,第二個方法前進到文件中的下一個記錄(將指針移動到下一個'\ n' )和其他方法用於將單個數據字段提取到返回的NSString值中。還有一些其他嵌入式檢查,以確保每個字段提取沒有超出當前記錄。可能有點挑剔,但既然這是一個演示程序,我並不在乎。

我聲明瞭CLASS_A的幾個實例,並使用爲CLASS_B定義的方法加載了CLASS_A的每個實例,然後將這些CLASS_A實例成功加載到數組中。精細。我可以在調試器中看到它們,並可以使用各種數組方法來獲取它們。

現在我想概括一下這個東西,這樣我就可以建立一個循環,只是快樂地填充CLASS_A表,每個輸入文件記錄都有一個CLASS_A條目,通過CLASS_B中的各種方法訪問,直到我用完輸入記錄。在我的工作示例中,我明確命名了大約5個CLASS_A實例並將它們添加到數組中。我如何擺脫明確命名CLASS_A實例並循環。我真的不在乎每個CLASS_A實例的名稱是什麼......它們存在被捆綁到表中並按程序的其他部分的要求取出。

任何幫助將是偉大的。代碼對於這個站點有點長,但是如果它有幫助,我也可以發佈它。

回答

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]]; 
} 
+0

感謝您的...當我在本週晚些時候得到一個機會,我會試試看。看起來很乾淨。 – 2011-02-24 04:02:20

+0

就像後續一樣,我想確保我完全理解這一點。看來,通過直接在addObject方法中使用類方法,您不必命名實例。雖然我明白了,這顯然是一條路,但對我來說這似乎只是一種編碼技巧。 – 2011-02-24 04:09:36

+0

認爲它的正式方式是作爲一個匿名對象。就像變量名稱是一種引用它的方式一樣,數組中的某個位置是引用它的一種方式。而不是MyClass_A1,你有(某種)MyClass_A [1]。 (當然,你真的有[myClass_A objectAtIndex:1],但你明白了。) – 2011-02-24 20:52:37

相關問題