我正在尝试熟悉目标C,我目前的目标是读取文本文件中的项目列表并将它们存储在NSString数组中。
目前这就是我所拥有的:
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"txt"];
NSData* data = [NSData dataWithContentsOfFile:filepath];
NSString* string = [[NSString alloc] initWithBytes:[data bytes]
length:[data length]
encoding:NSUTF8StringEncoding];
NSString* delimiter = @"\n";
listArray = [string componentsSeparatedByString:delimiter];
我不确定这是否重要,但myList.txt
在我的支持文件中。
目前,我的列表中只有一个项目。但是我甚至无法将该1个项目存储到我的listArray
。
我确信我缺少了一些愚蠢的东西,我只是对Objective C的新手。
修改 我很抱歉没有提到这个。我没有收到任何错误。我的数组只是null。
答案 0 :(得分:26)
我会建议一些可以解决你的问题的简化,因为我不能说你的问题是什么。根据信息,我不确定你是否在阅读时获得了正确的文件内容。
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"txt"];
NSError *error;
NSString *fileContents = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:&error];
if (error)
NSLog(@"Error reading file: %@", error.localizedDescription);
// maybe for debugging...
NSLog(@"contents: %@", fileContents);
NSArray *listArray = [fileContents componentsSeparatedByString:@"\n"];
NSLog(@"items = %d", [listArray count]);
答案 1 :(得分:3)
如果文件内容如下:
[{"Title":"20","Cost":"20","Desc":""},{"Title":"10","Cost":"10.00","Desc":""},{"Title":"5","Cost":"5.00","Desc":""}]
试试这个
-(id)readFromDocumentDBFolderPath:(NSString *)fileName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
NSFileManager *fileManager=[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:appFile])
{
NSError *error= NULL;
NSData* data = [NSData dataWithContentsOfFile:appFile];
id resultData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
if (error == NULL)
{
return resultData;
}
}
return NULL;
}