Ios 导入csv数据(SDK iphone)
对于下面的代码,我可以读取字符串中的所有数据,并成功获取用于绘图的数据Ios 导入csv数据(SDK iphone),ios,iphone,cocoa-touch,csv,nsstring,Ios,Iphone,Cocoa Touch,Csv,Nsstring,对于下面的代码,我可以读取字符串中的所有数据,并成功获取用于绘图的数据 NSMutableArray *contentArray = [NSMutableArray array]; NSString *filePath = @"995,995,995,995,995,995,995,995,1000,997,995,994,992,993,992,989,988,987,990,993,989"; NSArray *myText = [filePath componentsSeparatedBy
NSMutableArray *contentArray = [NSMutableArray array];
NSString *filePath = @"995,995,995,995,995,995,995,995,1000,997,995,994,992,993,992,989,988,987,990,993,989";
NSArray *myText = [filePath componentsSeparatedByString:@","];
NSInteger idx;
for (idx = 0; idx < myText.count; idx++) {
NSString *data =[myText objectAtIndex:idx];
NSLog(@"%@", data);
id x = [NSNumber numberWithFloat:0+idx*0.002777778];
id y = [NSDecimalNumber decimalNumberWithString:data];
[contentArray addObject:
[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil]];
}
self.dataForPlot = contentArray;
我运行代码,它应该给出相同的图形输出。但是,似乎没有成功地从CSV文件加载数据。
我无法找出我的代码出了什么问题
NSMutableArray *contentArray = [NSMutableArray array];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"csv"];
NSString *Data = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil ];
if (Data)
{
NSArray *myText = [Data componentsSeparatedByString:@","];
NSInteger idx;
for (idx = 0; idx < myText.count; idx++) {
NSString *data =[myText objectAtIndex:idx];
NSLog(@"%@", data);
id x = [NSNumber numberWithFloat:0+idx*0.002777778];
id y = [NSDecimalNumber decimalNumberWithString:data];
[contentArray addObject:
[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y",nil]];
}
self.dataForPlot = contentArray;
}
我在这里做错了什么吗?我设置了一个示例项目,并尝试了这段代码,它成功了 两个最可能的误差点是 您没有获取文件路径,即文件路径为零 您没有正确读取文件。 我建议加上:
NSLog( @"filePath: %@", filePath );
NSLog( @"Data: %@", Data );
和改变:
NSString *Data = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil ];
当然,通过调试器运行此代码并检查返回值也会起作用,并让您确切地知道它失败的地方。我设置了一个示例项目并尝试了此代码,它成功了 两个最可能的误差点是 您没有获取文件路径,即文件路径为零 您没有正确读取文件。 我建议加上:
NSLog( @"filePath: %@", filePath );
NSLog( @"Data: %@", Data );
和改变:
NSString *Data = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil ];
当然,通过调试器运行此操作并检查返回值也会起作用,并让您确切知道失败的位置。请记录pathForResource:ofType:和stringWithContentsOfFile:encoding:error:的返回值,并编辑问题以包含输出。还请停止抑制该错误,将change error:nil返回到error:&nameofVariableYouCreateToHoldAnnsErrorObject并记录该对象,然后编辑问题以包含该输出。框架经常试图告诉你你做错了什么;当您将NULL或nil传递给错误返回时,您会阻止他们这样做。作为一个风格点,我可以建议data不是最有意义的变量名,并且具有两个不同的变量data和data是完全混淆的+1对于不要忽略错误返回,它可能试图告诉您一些事情调用字符串变量“data”本身就令人困惑,因为有一个NSData类,而我更可能将变量命名为“data”如果它包含NSData对象。请记录pathForResource:ofType:和stringWithContentsOfFile:encoding:error:的返回值,并编辑您的问题以包含输出。还请停止抑制该错误,将change error:nil返回到error:&nameofVariableYouCreateToHoldAnnsErrorObject并记录该对象,然后编辑问题以包含该输出。框架经常试图告诉你你做错了什么;当您将NULL或nil传递给错误返回时,您会阻止他们这样做。作为一个风格点,我可以建议data不是最有意义的变量名,并且具有两个不同的变量data和data是完全混淆的+1对于不要忽略错误返回,它可能试图告诉您一些事情调用字符串变量“data”本身就令人困惑,因为有一个NSData类,而我,作为其中之一,如果变量包含NSData对象,则更有可能将其命名为“data”。谢谢您的帮助!!!是的,我跟踪了数据文件的位置,确保找到了正确的路径。它起作用了!!谢谢你的帮助!!!是的,我跟踪了数据文件的位置,确保找到了正确的路径。它起作用了!! NSError* error; NSString* Data = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error ];
NSLog( @"error: %@", error );