Objective c 使用Objective C从CSV文件创建数组
我是新来的编码,所以请原谅,如果这似乎是一个简单的问题 我在地图上画坐标 我想读取一个CSV文件并将信息传递到两个单独的阵列 第一个数组将是NSArray*towerInfo(包含纬度、经度和塔标题) 第二个是NSArray*区域(包含塔标题和区域),其计数索引与第一个数组相同 基本上,我认为我需要 1) 将文件读取为字符串 2) 将字符串分成一个临时数组,每个/n/r 3) 在将此信息附加到两个主存储阵列之前,循环遍历临时阵列并每次创建一个塔和区域对象 这是正确的过程吗?如果是的话,有没有人可以发布一些示例代码,因为我真的很难做到这一点 提前感谢大家 克里斯 我已经编辑了这个以显示我的代码示例。我有一个问题,我收到警告说 1) “dataStr”的本地声明隐藏了实例变量。 2) “array”的本地声明隐藏了实例变量 我想我明白这些意味着什么,但我不知道如何避开它。程序编译并运行,但日志告诉我“数组为空” 任何额外的帮助都将不胜感激。感谢到目前为止的回复Objective c 使用Objective C从CSV文件创建数组,objective-c,xcode,Objective C,Xcode,我是新来的编码,所以请原谅,如果这似乎是一个简单的问题 我在地图上画坐标 我想读取一个CSV文件并将信息传递到两个单独的阵列 第一个数组将是NSArray*towerInfo(包含纬度、经度和塔标题) 第二个是NSArray*区域(包含塔标题和区域),其计数索引与第一个数组相同 基本上,我认为我需要 1) 将文件读取为字符串 2) 将字符串分成一个临时数组,每个/n/r 3) 在将此信息附加到两个主存储阵列之前,循环遍历临时阵列并每次创建一个塔和区域对象 这是正确的过程吗?如果是的话,有没有人可
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: @","];