从Objective-C中的文本文件中读取字符串

时间:2014-06-04 18:45:40

标签: ios objective-c

游戏类似于问答游戏。问题是图片,答案是字符串。 只是想知道从文本文件中随机读取字符串(答案)的最佳方法是什么,以便使用所选字符串从一组图片中提取图片(问题)。图片将与文本文件中的所有名称字符串具有相同的名称,但我不能重复它们。 截至目前,我有switch语句,有多个案例选择图片(问题)和字符串(答案)。基本上我不想将代码中的所有字符串保存在.m文件中。

问题将以图片的形式出现,文本文件将保留答案。

answers.txt

gta
fifa
minecraft

问题:      gta.jpg      fifa.jpg      minecraft.jpg

所以随机数发生器会选择 回答gta 当它这样做时,它应该选择正确的pic(gta.jpg)

所以最后看起来像这样: gta.jpg 包括gta和玩家在内的四个答案选择将选择正确的答案

这是清楚的吗?

3 个答案:

答案 0 :(得分:0)

使用属性列表。将问题列表存储为字典数组,其中每个字典都有问题文件名和答案的条目,如下所示:

[
    {
        "question" : "gta.jpg",
        "answer" : "gta"
    },
    {
        "question" : "fifa.jpg"
        "answer" : "fifa"
    },
    //...
]

然后您可以使用便捷方法将字典读入内存:

NSArray *questions = [NSArray arrayWithContentOfFile:pathToQuestionsPList];

答案 1 :(得分:0)

我认为Caleb的建议非常好。通过拥有一个字典数组,字符串和它的图像始终保持在一起。

您可以编写一次性解析器方法,该方法将文本文件作为输入并生成输出plist。我想你的文件将是多行imageNameanswer。然后你要读取文本文件,使用NSString方法componentsSeparatedByString将它分解为逐行,然后循环遍历这些行,再次使用componentsSeparatedByString:@“\ i”(制表符),这次要打破它分为文件名和答案字符串。您将结果转换为字典数组并将其写入应用程序的文档文件夹。然后将结果拖到项目中。

如果您想真正想要的话,可以将文本文件解析器转换为命令行工具,并使其成为构建过程的一部分,以便在更新图像名称和答案的文本文件时自动构建过程在其上运行解析器并将输出复制到应用程序包中。但是,这有点超出了你目前的能力。

答案 2 :(得分:0)

如果您有很多问题,可能需要学习使用核心数据和数据库。如果你只有几个,那么plist或dictionary方法就可以了。

我的一个应用程序在数据库中有一堆故事,在最后一分钟,我们决定添加图像。我没有弄乱数据库,而是编写了一个快速类,它使用字典将故事与图像名称配对。

视图控制器查询类以获取图像的名称。

NSString *imageName = [EarlyReadingImageNames findStoryImage:title];

这是全班。

//
//  EarlyReadingImageNames.m
//  Words
//
//  Created by John Scarry on 5/20/14.
//

#import "EarlyReadingImageNames.h"

@implementation EarlyReadingImageNames

+(NSString *) findStoryImage:(NSString *)story {

    NSDictionary* imageDictionary= @{ @"Alice the Worker Bee" : @"Alice",
                                      @"Alice Learns to Fly" : @"Alice",
                                      @"Alice Loves Her New Job" : @"Alice",
                                      @"George Likes to Sing" : @"George",
                                      @"George Likes to Dance" : @"George",
                                      @"George Saves the Day" : @"George",
                                      @"Jensen Meets Bob the Buffalo" : @"JensenBob",
                                      @"Jensen and Bob Play in the Pond" : @"JensenBob",
                                      @"Jensen and Bob Make a Pair of Boots" : @"JensenBob",
                                      @"Rita Finds a New Home" : @"Rita",
                                      @"Rita Makes a Boat" : @"Rita",
                                      @"Rita Loves Words" : @"Rita",
                                      @"The Rock That Looked Like a Frog" : @"Sandy",
                                      @"The Rock and the Rainbow" : @"Sandy",
                                      @"Sandy Makes New Friends" : @"Sandy",
                                      @"James and the Bowl of Baseballs" : @"James", 
                                      @"James and the Garden" : @"James", 
                                      @"James Builds a Bird House" : @"James", 
                                      @"Lily Finds Eggs" : @"Lily",
                                      @"Lily and Bessie the Cow" : @"Lily", 
                                      @"Lily Feeds the Lambs" : @"Lily", 
                                      @"Hector and Bo" : @"Hector", 
                                      @"Hector Loves Fish Socks" : @"Hector",
                                      @"Hector Makes a Kite" : @"Hector", 
                                      @"Yoshi and Toshiko Get a New Home" : @"ToshikoYoshi",
                                      @"Yoshi and Toshiko Go to the Library" : @"ToshikoYoshi",
                                      @"Yoshi and Toshiko Go to the Park" : @"ToshikoYoshi",
                                      @"Pete Loves Birds" : @"Pete",
                                      @"Pete Meets Max" : @"Pete", 
                                      @"Pete and Max Are Best Friends" : @"Pete"
                                      };

    return [imageDictionary valueForKey:story];
}

@end