Objective-C中作为哈希表输入的文件内容

Objective-C中作为哈希表输入的文件内容,objective-c,hashtable,Objective C,Hashtable,我知道在Objective-C中读取文件的内容,但如何将其作为哈希表的输入。 将文本文件的内容视为Test.txt LENOVA HCL WIPRO DELL 现在我需要将其作为键值对读入哈希表 KEY VAlue 1 LENOVA 2 HCL 3 WIPRO 4 DELL 您希望将文件解析为一个字符串数组,并为此数组中的每个元素分配一个键。这可能会帮助你找到正确的方向 NSString *wholeFile = [NSStri

我知道在Objective-C中读取文件的内容,但如何将其作为哈希表的输入。 将文本文件的内容视为Test.txt

LENOVA 
HCL 
WIPRO 
DELL
现在我需要将其作为键值对读入哈希表

KEY   VAlue

  1     LENOVA
  2     HCL
  3     WIPRO
  4     DELL

您希望将文件解析为一个字符串数组,并为此数组中的每个元素分配一个键。这可能会帮助你找到正确的方向


NSString *wholeFile = [NSString stringWithContentsOfFile:@"filename.txt"];
NSArray *lines = [wholeFile componentsSeparatedByString:@"\n"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:[lines count]];
int counter = 1;

for (NSString *line in lines)
{
    if ([line length])
    {
        [dict setObject:line forKey:[NSString stringWithFormat:"%d", counter]];

//      If you want `NSNumber` as keys, use this line instead:
//      [dict setObject:line forKey:[NSNumber numberWithInt:counter]];

        counter++;
    }
}

请记住,这不是解析文件的最有效方法。它还使用不推荐使用的方法
stringWithContentsOfFile:

要恢复线路,请使用:

NSString *myLine = [dict objectForKey:@"1"];

// If you used `NSNumber` class for keys, use:
// NSString *myLine = [dict objectForKey:[NSNumber numberWithInt:1]];

这不只是一个数组吗?如果您按照键入的相同顺序读取,无需实现哈希表。
stringWithContentsOfFile:
被弃用,取而代之的是
stringWithContentsOfFile:usedEncoding:error:
,它提供了有关读取文件时检测到的编码的信息,并且在读取文件失败时还返回一个
NSError
对象。嘿。。这就是我们检查哈希表内容的方法,对吗??“NSLog(@“1=%@,[dict objectForKey:@“1”]);”@suse,不完全是这样,在上面我使用了
NSNumber
class作为键,但在您的注释中,您试图使用
NSString
作为键。如果希望
NSString
作为键,则需要更改
setObject:forKey:
部分。我已经编辑了我的答案,以进一步帮助您。我应该为“I”的值写什么,它会给我一个错误,说“I”是未声明的,首先在这个函数中使用??它是关键值,对吗?但是怎么申报呢?哎呀!对不起,这是一个输入错误,
i
是用来读取
计数器的。我的错误。请再试一次。