Objective c 从逗号分隔文件加载类的最佳方法

Objective c 从逗号分隔文件加载类的最佳方法,objective-c,csv,coding-style,classloader,delimited-text,Objective C,Csv,Coding Style,Classloader,Delimited Text,我是objective-c和面向对象编程的新手,一般来说,我有一个理论上的、风格上的问题。我要做的是加载一个类表,其中包含逗号分隔文件中的条目。文件中的数据由许多条目组成,这些条目由一个短键和几个字符串值组成,所有值都由逗号分隔 有一百万种方法可以做到这一点,但我想问的是,从严格的理论观点来看,哪种方法最好。我暂时不想使用任何XML编码,但一旦我有了一个入门程序,可能最终会转换成这种格式 我可以使用一个函数来获取“下一条记录”,并在函数中传入和传出一个结构,创建一个新的类实例,从结构中加载它,然

我是objective-c和面向对象编程的新手,一般来说,我有一个理论上的、风格上的问题。我要做的是加载一个类表,其中包含逗号分隔文件中的条目。文件中的数据由许多条目组成,这些条目由一个短键和几个字符串值组成,所有值都由逗号分隔

有一百万种方法可以做到这一点,但我想问的是,从严格的理论观点来看,哪种方法最好。我暂时不想使用任何XML编码,但一旦我有了一个入门程序,可能最终会转换成这种格式

我可以使用一个函数来获取“下一条记录”,并在函数中传入和传出一个结构,创建一个新的类实例,从结构中加载它,然后将它添加到数组中。我首先使用stringWithContentsOfFile方法将文件加载到字符串中,然后使用字符串函数和一些指针遍历文件以返回结构元素,然后将其加载到类中


在objective-c中,这似乎是一种合理的方法,还是有一种更好的方法,理论上更合理,至少也能起作用?

您有一个CSV文件,您想阅读它

最简单的方法是:

#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
    }
}

这是一段很好的代码。对于一个旧的COBOLer来说有点紧凑,但相当不错。我曾考虑过围绕输入文件构建一个“类”,并使用“方法”提取我需要的内容。一种将其加载到NSSTRING的方法。。。另一种将下一行提取为花药字符串的方法。。。获取当前行中第一个值的另一种方法。。。等这是不是太过分了?@Joe这取决于你对代码的目标是什么。在编写
CHCSVParser
时,我的目标是使其尽可能简单易用,因此除了事件驱动解析选项(有关如何工作的信息,请参阅项目)之外,我还添加了这些内容,使其成为一个单线调用。谢谢。我可能会尝试两种方法(一种是使用您提供的代码),另一种可能是更正式的版本,只是为了看看它的优点/缺点。@Yar惯例是,由于
NSError**
是可选的,所以它只是元数据,用于描述返回值指示失败时发生的情况。在检查错误之前,应始终检查返回值,因为不能保证错误的值与最初设置的值相同。@Yar在错误处理编程指南中记录错误对象之前检查返回值: