Objective-C中作为哈希表输入的文件内容
我知道在Objective-C中读取文件的内容,但如何将其作为哈希表的输入。 将文本文件的内容视为Test.txtObjective-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
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
是用来读取计数器的。我的错误。请再试一次。