2010-12-14 29 views
3

我是一個相當新的Objective-C和麪向對象的編程,並且有一個理論上的風格類型問題。我想要做的是用逗號分隔文件中的條目加載類表。文件中的數據由很多條目組成,這些條目由一個短鍵組成,後面跟着幾個字符串值,所有這些都是由commma分隔的。從逗號分隔的文件中加載類的最佳方法

有一百萬種方法可以做到這一點,但我問的是從嚴格的理論角度來看最好的方式。我想暫時避開任何類型的XML編碼,但一旦我獲得了一個入門程序,最終可能會轉換爲該格式。

我可以使用函數來獲取'下一條記錄',並將函數傳入和傳出函數,創建類的新實例,從結構中加載它,然後將其添加到數組中。我會使用stringWithContentsOfFile方法將文件加載到一個字符串中,然後使用字符串函數和一些指針來遍歷文件,以返回結構元素,然後將其加載到類中。

這似乎是一個合理的方式來做到這一點在objective-c或者是否有更好的方法可能更理論上合理,至少可以工作?

回答

4

你有一個CSV文件,你想讀它? There's some code for that

最簡單的方法是這樣的:

#import "CHCSV.h" 

NSString * csvFile = ...; //path to the CSV file 
NSError * error = nil; 
NSArray * contents = [NSArray arrayWithContentsOfCSVFile:csvFile 
               encoding:NSUTF8StringEncoding 
                error:&error]; 
if (contents == nil) { 
    NSLog (@"Error %@", error); 
} else { 
    for (NSArray * row in contents) { 
     NSLog(@"CSV fields in this line: %@", row); 
     // "row" contains all the fields (as NSStrings) that were present 
     // on this line of CSV 
    } 
} 
+0

這是一個很好的一段代碼。一箇舊的COBOLer的小巧但相當不錯。我曾考慮在輸入文件周圍建立一個'類',並使用'方法'來提取我需要的東西。一種將其加載到NSSTRING中的方法...將另一行提取到另一個字符串中的另一種方法...另一種獲取當前行中的第一個值的方法......等等......這是多麼的矯枉過正? – 2010-12-22 06:21:58

+0

@Joe它取決於你的目標是什麼與代碼。在編寫'CHCSVParser'時,我的目標是儘可能簡單地使用它,所以除了事件驅動的解析選項(請參閱項目瞭解它的工作原理)之外,我還添加了這些東西使它成爲一個單線電話。 – 2010-12-22 06:50:35

+0

謝謝你。我可能會嘗試兩種方式(一種使用您提供的代碼),另一種可能是更正式的版本,以查看優勢/劣勢。 – 2010-12-30 02:15:45

相關問題