Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用CHCSVParser解析NSString返回nil_Ios_Objective C_Csv_Nsstring - Fatal编程技术网

Ios 使用CHCSVParser解析NSString返回nil

Ios 使用CHCSVParser解析NSString返回nil,ios,objective-c,csv,nsstring,Ios,Objective C,Csv,Nsstring,我正在尝试使用CHCSVParser解析NSString,我已经从github下载了示例项目 并浏览了整个项目,特别是UnitTests.m文件,该文件显示了如何读取.csv文件或csv字符串的示例 我已经使用这些代码行尝试解析我的NSString //file = myNSString of comma seperated values NSStringEncoding encoding = 0; NSString *csv = [NSString stringWithCon

我正在尝试使用CHCSVParser解析NSString,我已经从github下载了示例项目

并浏览了整个项目,特别是UnitTests.m文件,该文件显示了如何读取.csv文件或csv字符串的示例

我已经使用这些代码行尝试解析我的NSString

//file = myNSString of comma seperated values
    NSStringEncoding encoding = 0;
    NSString *csv = [NSString stringWithContentsOfFile:file usedEncoding:&encoding error:nil];
    NSArray *fields = [csv CSVComponents];
    NSLog(@"fields: %@", fields);
这就是我试图解析的NSString“文件”的外观:

"Completed Item","Un-complete Item","Damaged Item"
当我将其传递给该代码时,fields数组不返回任何内容。看起来是这样的:

fields: (null)

是的,该文件包含我在上面添加的字符串。

您已经有了一个包含逗号分隔值的字符串。不能使用该字符串加载同名文件。只要做:

NSString *file = @"Completed Item","Un-complete Item","Damaged Item";
NSArray *fields = [file CSVComponents];
NSLog(@"fields: %@", fields);
(代表问题作者发布解决方案。)

这就是我最终如何做到的

NSString *firstJSONString = [jsonArray objectAtIndex:0];
NSArray *fields = [firstJSONString CSVComponents]; // for some reason returns 1 object .. not sure why
NSArray *seperatedArrayOfFields = [fields objectAtIndex:0]; // this line splits fields into 3 NSString objects 

您是否检查了
csv
是否为
nil
。。这就是问题所在。我一直在阅读,试图弄明白这一点,但有这么多不同的来源,很多人都想弄清楚唯一的区别是,我没有从文件中读取NSString,而是使用了NSString,而只是尝试使用了一个NSString。这是我不起诉的缺失行,因为我不需要从文件中读取NSString。NSString*文件=[[NSBundle bundleForClass:[self class]]pathForResource:@“Test”of type:@“csv”];如果您已经有一个字符串,那么为什么要尝试从文件中读取它?
file
是带有逗号分隔值的字符串变量吗?只需执行
NSArray*字段=[file CSVComponents]啊。。我认为stringWithContentsOfFile是CHCSVParser类的委托方法。。多痛苦啊。谢谢你的帮助好的,所以我刚从尝试中回来,我还没有研究它,但这不起作用。。。当我在调试器中记录该数组时,该数组只返回一个类似于此的字段。字段:(“已完成的项目”、“未完成的项目”、“损坏的项目”)您从
字段中得到了什么。计数
?您确定没有得到包含3个字符串的数组吗?我有。。用答案更新了我的问题。所以我是对的,你得到了一个数组中的一个数组。这是有道理的。顶级数组对字符串中的每一行都有一个值。每个子数组都是给定行的字段。