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

IMHO、これを達成する簡単な方法は、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 に答える