0

私がやろうとしていることを正確に行う多くの(単純な)例を読んだような気がします。私はこれを機能させることができないようです。私は自分のコードを再確認する必要がありますが、周りに誰もいないので、これが非常に単純に思える場合はご容赦ください... コードは問題なくコンパイルされます。ありがとうございました!

@implementation Engine
- (id) initWithInventory: (NSString *) path {
    if (self = [super init]) {
        NSString *contents = [NSString stringWithContentsOfFile:@"ingredientList.csv" encoding:NSASCIIStringEncoding error:nil];

        NSLog(@"%@",contents); // This yields the contents of the file appropriately

        NSArray *lines = [contents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
        NSRange ingredientRange = {0,96}; // This is done because I want to omit the last element of the array... the 97th is an empty string caused by the end of file newline character.  I know it's bad coding...

        NSEnumerator *enumerator = [[lines subarrayWithRange:ingredientRange] objectEnumerator];
        NSString *curString;
        NSArray *ingredientElements;
        NSRange activeEffectRange = {1,4}; // Element 0 will be the key, elements 1-4 are the array to be stored.

        while (curString = [enumerator nextObject]) {
            ingredientElements = [curString componentsSeparatedByString:@","];
            Ingredient *theIngredient = [[Ingredient alloc] initWithName:[ingredientElements objectAtIndex:0] andActiveEffects:[ingredientElements subarrayWithRange:activeEffectRange]];
            NSLog(@"%@",[theIngredient ingredientName]);
            NSLog(@"%@",[theIngredient activeEffects]); //These both print out correctly.

            NSString *theName = [theIngredient ingredientName];
            [allIngredients setObject:theIngredient forKey:theName];
            NSLog(@"%@",[allIngredients objectForKey:[theIngredient ingredientName]]); // ***This yields (null)***
        }
    }
    return self;
}

編集:追加する必要allIngredientsがあります。これは、開始されるクラスのインスタンス変数であるため、次のように適切に定義されますNSMutableDictionary

@interface Engine : NSObject {
    NSMutableDictionary *allIngredients;
}
- (id) initWithInventory: (NSString *) path;
@end
4

1 に答える 1

3

どこで作成していallIngredientsますか? 宣言しましたが、使用する前に割り当てていません。

allIngredients = [[NSMutableDictionary alloc] init]
于 2012-08-09T22:13:36.037 に答える