0

我正在尝试开发一个 iOS 应用程序,它允许用户输入一个单词然后按下按钮来获取单词的定义

实际上我有一个文件,其中包含单词及其定义,例如

Apple , the definition 
orange , the definition 

我写了代码,但我不知道为什么它不起作用

#import "ViewController.h"

NSString *readLineAsNSString(FILE *file);

@interface ViewController ()

@end

@implementation ViewController
@synthesize text;
@synthesize lab;
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)butt:(id)sender {
    FILE *file = fopen("1.txt", "r");
    NSString *a = text.text ;
    bool found =FALSE;

    while(!feof(file)|| !found )
    {
      NSString *line = readLineAsNSString(file);
        if ((a= [[line componentsSeparatedByString:@","] objectAtIndex:1])) {
            lab.text = [[line componentsSeparatedByString:@","] objectAtIndex:0];
        }

    fclose(file);
    }
}

@end

谁能帮我找出问题所在?

4

1 回答 1

1

恕我直言,实现此目的的一种简单方法是通过 plist。

在这里,一个小例子来实现你想要的。

1)创建您的 plist 文件。

在您的项目中,转到“添加新文件”。在左列中,在 iOS(例如)下,选择“资源”。在主面板中选择“属性列表”文件。使用“Defs”之类的名称保存。

您的 plist 应如下所示。

在此处输入图像描述

2)读取plist文件(代码中的注释)

- (void)readDefinitionsFile
{
    // grab the path where the plist is located, this plist ships with the main app bundle
    NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"Defs" ofType:@"plist"];

    // create a dictionary starting from the plist you retrieved
    NSDictionary* definitions = [NSDictionary dictionaryWithContentsOfFile:plistPath];

    // JUST FOR TEST PURPOSES, read the keys and the values associated with that dictionary
    for (NSString* key in [definitions allKeys]) {
        NSLog(@"definition for key \"%@\" is \"%@\"", key, [definitions objectForKey:key]);
    }
}

一些笔记

上面一个简单的例子说明了如何使用 plist。它没有提供一个完整的例子来实现你想要的。基于此,您将能够实现您的目标。

您应该需要一个属性来引用您检索到的字典。因此,例如,在您的 .m 中。

@interface ViewController ()

@property (nonatomic, strong) NSDictionary* definitions;

@end

@implementation ViewController

// other code here

// within readDefinitionsFile method
self.definitions = [NSDictionary dictionaryWithContentsOfFile:plistPath];

用于definitions检索您感兴趣的定义。

NSString* definition = [self.definitions objectForKey:@"aKeyYouWillRetrieveFromSomewhere"];
if(definition) {
    NSLog(@"definition is %@ for key %@", definition, @"aKeyYouWillRetrieveFromSomewhere");
} else {
    NSLog(@"no definition for key %@", @"aKeyYouWillRetrieveFromSomewhere");
}

希望有帮助。

于 2013-03-25T21:24:42.907 回答