2010-12-14 6 views
3

나는 객관적으로 매우 새로운 개념의 객체 지향 프로그래밍이며 이론적 인 문체 유형의 질문이 있습니다. 쉼표로 구분 된 파일의 항목이있는 클래스 테이블을로드하고 싶습니다. 파일의 데이터는 짧은 키와 몇 개의 문자열 값으로 구성된 많은 항목으로 구성되며 모두 쉼표로 구분됩니다.쉼표로 구분 된 파일에서 클래스를로드하는 가장 좋은 방법은

이렇게하는 데는 백만 가지 방법이 있지만 엄밀히 말하면 이론적 관점에서 볼 때 가장 좋은 방법이 무엇인지 묻고 싶습니다. 나는 어떤 종류의 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 ... 다른 문자열로 다음 행을 추출하는 다른 메서드 ... 현재 행의 첫 번째 값을 얻는 또 다른 메서드 ... etc .... 꽤 잔인한가요? –

+0

@Joe 코드의 목적에 따라 다릅니다. 'CHCSVParser'를 작성할 때 저의 목표는 가능한 한 간단하게 만드는 것이 었습니다. 그래서 이벤트 중심의 파싱 옵션 (어떻게 작동하는지에 대한 정보는 프로젝트 참조) 외에도이 항목을 추가하여 한 - 라인 전화. –

+0

고마워요. 아마 장점/단점을보기 위해 두 가지 방법 (여러분이 제공 한 코드를 사용하는 방법)과 좀 더 공식적인 방법을 시도 할 것입니다. –

관련 문제