Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C:如何从包含由/n分隔的字符串列表的文件中读取字符串,然后分别存储字符串的每个字符_Objective C_File - Fatal编程技术网

Objective c 目标C:如何从包含由/n分隔的字符串列表的文件中读取字符串,然后分别存储字符串的每个字符

Objective c 目标C:如何从包含由/n分隔的字符串列表的文件中读取字符串,然后分别存储字符串的每个字符,objective-c,file,Objective C,File,我正在为iPhone构建一个类似于mastermind的游戏,我需要逐个字符比较两个字符串。我需要从数据库中选择一个字符串,并将其与播放器输入的字符串进行比较 我试过以下方法,但似乎不起作用。你能帮帮我吗 //create file handle NSFileHandle *file; file = [NSFileHandle fileHandleForReadingAtPath:@"4db.txt"]; //read data into file in NSData format NSDat

我正在为iPhone构建一个类似于mastermind的游戏,我需要逐个字符比较两个字符串。我需要从数据库中选择一个字符串,并将其与播放器输入的字符串进行比较

我试过以下方法,但似乎不起作用。你能帮帮我吗

//create file handle
NSFileHandle *file;
file = [NSFileHandle fileHandleForReadingAtPath:@"4db.txt"];

//read data into file in NSData format
NSData *filedata;
filedata = [file readDataToEndOfFile];

//convert NSData to NSString
NSString *string;
string = [[NSString alloc] initWithData:filedata encoding:NSASCIIStringEncoding]; 

//convert from string to array
NSArray *lines = [string componentsSeparatedByString:@"\n"]; 

//take one of the string and store it in sword
NSString *sword = [lines objectAtIndex:0];

//convert string to char
const char *word = [sword UTF8String];
sec[0] = word[0];
sec[1] = word[1];
sec[2] = word[2];
sec[3] = word[3];

我现在假设sec包含我从文件中读取的字符串的字符。它似乎不起作用。请帮忙。如果你能建议的话,任何其他有效的方法都是很好的。

你在那里经历了很多困难。只需一条语句,即可使用文件内容初始化字符串:

NSString *str = [NSString stringWithContentsOfFile:@"db4.txt"
                                          encoding:NSASCIIStringEncoding
                                             error:NULL];
尽管在这种情况下,您可能希望通过提供
NSError*
,确保正确读取文件内容:

NSError *error;
NSString *str = [NSString stringWithContentsOfFile:@"db4.txt"
                                          encoding:NSASCIIStringEncoding
                                             error:&error];

if (fileContents == nil)
    NSLog (@"Error! %@", error);

尽可能地用可可粉。如果要比较字符串,最好将任何C样式的字符串转换为NSStrings并比较NSStrings,而不是返回到C样式的字符串。

。。。。。什么不起作用

你所说的是正确的……是的。我可能会这样做:

NSString * contents = [NSString stringWithContentsOfFile:@"db4.txt" encoding:NSASCIIStringEncoding error:nil];
NSArray * lines = [contents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSString * firstLine = [lines firstObject];

NSString * userEnteredString = ...;
if ([firstLine isEqualToString:userEnteredString]) {
  //the first line matches what the user entered
}
编辑

如果它找不到您的
db4.txt
文件,那是因为它在错误的位置查找它。尝试以下方法:

NSString * dbFile = [[NSBundle mainBundle] pathForResource:@"db4" ofType:@"txt"];
NSString * contents = [NSString stringWithContentsOfFile:dbFile encoding:NSASCIIStringEncoding error:nil];

尝试在每行之后运行调试器或调用NSLog,确保每一步都符合预期。此外,使用
[NSString stringWithContentsOfFile:@“4db.txt”编码:NSASCIIStringEncoding error:NULL]
哇!!最后它成功了。谢谢Dave:):)NSString*dbFile=[[NSBundle mainBundle]路径资源:@“db4”类型:@“txt”];成功了:)