Objective c 使用Objective C从CSV文件创建数组

Objective c 使用Objective C从CSV文件创建数组,objective-c,xcode,Objective C,Xcode,我是新来的编码,所以请原谅,如果这似乎是一个简单的问题 我在地图上画坐标 我想读取一个CSV文件并将信息传递到两个单独的阵列 第一个数组将是NSArray*towerInfo(包含纬度、经度和塔标题) 第二个是NSArray*区域(包含塔标题和区域),其计数索引与第一个数组相同 基本上,我认为我需要 1) 将文件读取为字符串 2) 将字符串分成一个临时数组,每个/n/r 3) 在将此信息附加到两个主存储阵列之前,循环遍历临时阵列并每次创建一个塔和区域对象 这是正确的过程吗?如果是的话,有没有人可

我是新来的编码,所以请原谅,如果这似乎是一个简单的问题

我在地图上画坐标

我想读取一个CSV文件并将信息传递到两个单独的阵列

第一个数组将是NSArray*towerInfo(包含纬度、经度和塔标题)

第二个是NSArray*区域(包含塔标题和区域),其计数索引与第一个数组相同

基本上,我认为我需要

1) 将文件读取为字符串

2) 将字符串分成一个临时数组,每个/n/r

3) 在将此信息附加到两个主存储阵列之前,循环遍历临时阵列并每次创建一个塔和区域对象

这是正确的过程吗?如果是的话,有没有人可以发布一些示例代码,因为我真的很难做到这一点

提前感谢大家

克里斯

我已经编辑了这个以显示我的代码示例。我有一个问题,我收到警告说

1) “dataStr”的本地声明隐藏了实例变量。 2) “array”的本地声明隐藏了实例变量

我想我明白这些意味着什么,但我不知道如何避开它。程序编译并运行,但日志告诉我“数组为空”

任何额外的帮助都将不胜感激。感谢到目前为止的回复

NSString* fileContents = [NSString stringWithContentsOfURL:filename ...];
NSArray* rows = [fileContents componentsSeparatedByString:@"\n"];
for (...
    NSString* row = [rows objectAtIndex:n];
    NSArray* columns = [row componentsSeparatedByString:@","];
...

您可能需要加入一些“stringTrimmingCharactersInSet”调用来修剪空白。

我假设您问题的核心是“如何解析CSV文件”,而不是“解析后如何处理数据”。如果是这样的话,那就去图书馆看看。我以前在项目中使用过它,发现它非常可靠。它可以为您将任意字符串或文件路径解析为行/列数组。在此之后,您可以对数据执行任何操作。

关于您的警告:

您的代码将产生错误(而不是警告),因为在实现中合成属性之前,需要在接口文件中声明属性。您可能还记得,
@synthesis
为您的属性生成访问器方法。另外,在使用
@synthesis
指令之前,还需要在界面中使用
@property
指令。 下面是一个例子:

@interface MyObject : NSObject {
    NSString *myString;
}
@property (assign) NSString *myString;
@end

@implementation MyObject
@synthesize myString;
  // funky code here
@end
请注意,属性声明后面跟着一个类型(在本例中为assign,这是默认值)。Stephen G.Kochans的书中有一个很好的解释:


但是为了论证起见,假设您在这里省略了正确的
@interface
文件。 如果首先在
@接口中声明一个属性,然后在方法中使用相同的变量名声明另一个属性,则方法变量将优先于实例变量

在代码中,省略变量名的声明就足够了,如下所示:

dataStr = [NSString stringWithContentsOfFile:@"Towers.csv" encoding:NSUTF8StringEncoding error:nil];    
array = [dataStr componentsSeparatedByString: @","];

首先,你必须在你身边做一些事情,如果你在这些尝试之间插入了一些post代码,那么我们可以帮助你解决问题,祝你的triesCan好运,你可以给出CSV文件的几行示例,并解释信息在哪里?
dataStr = [NSString stringWithContentsOfFile:@"Towers.csv" encoding:NSUTF8StringEncoding error:nil];    
array = [dataStr componentsSeparatedByString: @","];