我有一个像这样的文本文件
问题1 问题2 问题3
我想只读第一行到nsstring
之后我想标记第一行,所以下次,跳过第一行,但我不知道该怎么做,我有这个代码供阅读,但只给我第三行
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"qa" ofType:@"txt"];
NSString *myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
NSArray *lines = [myText componentsSeparatedByString:@"\n"];
for(myText in lines)
{
texview.text = myText;
}
}
好的我试试这段代码,不要工作,我做错了什么?
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString * const kKey = @"OneTimeKey";
NSObject *keyValue = [defaults objectForKey:kKey];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"qa" ofType:@"txt"];
NSString *myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
NSArray *lines = [myText componentsSeparatedByString:@"|"];
if (keyValue==nil) {
for(myText in lines)
{
preguntadia.text = myText;
[defaults setBool:YES forKey:kKey];
}
}
答案 0 :(得分:1)
问题是你的“for”执行速度非常快,你只能看到数组的最后一个元素被设置为文本视图的时间。
你可以做的是有一个变量,它指定下一个要显示的字符串,并且使用计时器,每隔几秒就在文本视图上设置一个不同的字符串,这样你就可以实际看到这些变化。
奖金,你可以用这样的东西循环:
-(void)updateText{
[textView setText:[lines objectAtIndex:currentIndex]];
currentIndex++;
currentIndex = currentIndex % [lines count];
}
所以当它到达最后一个字符串时,它再次显示第一个字符串。
答案 1 :(得分:1)
我认为你需要在本地存储一个行计数器以便跟踪。用这样的东西很容易实现保存:
[[NSUserDefaults standardDefaults] setInteger:lineCount forKey:@"lineCountKey"];
并获取:
int lineCount = [[NSUserDefaults standardDefaults] integerForKey:@"lineCountKey"];
然后在打开文件时阅读并丢弃lineCount
行。
现在,将您想要的行拆分为多个部分,您可以使用NSString方法componentsSeparatedByString:
,但要小心。如果您的“问题”实际上是多字的问题,那么您需要选择除空格之外的分隔符。竖条(|)可能是一个不错的选择,那么你可以这样做:
NSArray *questions = [line componentsSeparatedByString:@"|"];
注意:代码从内存中输入;没编译。 : - )