setObjectにできません:forKey:NSMutableDictionaryで
-
23-08-2019 - |
質問
私は私が書くしようとしているシンプルなiPhoneのプログラムでは、ここで何かを明らかに欠けていると確信しているが、コードは私が間違っているものを見ることができないので、基本的なようです。
私はクラスとそれに関連する保存ファイル名のリストを格納するためにNSMutableDictionaryを使用しようとしています。ヘッダファイルでは、私は辞書を宣言
@interface ClassList : UITableViewController {
NSString *homedirectory;
NSString *masterindexpath;
NSMutableDictionary *classFilenameGlossary;
NSMutableArray *listofclasses;
}
@property (retain, nonatomic) NSString *homedirectory;
@property (retain, nonatomic) NSString *masterindexpath;
@property (retain, nonatomic) NSMutableDictionary *classFilenameGlossary;
@property (retain, nonatomic) NSMutableArray *listofclasses;
そして、もちろん、実装ファイルで
@implementation ClassList
@synthesize homedirectory;
@synthesize masterindexpath;
@synthesize classFilenameGlossary;
@synthesize listofclasses;
私はCLASSLISTを節約し、既存のファイルからのviewDidLoadでこの辞書を初期化します
- (void)viewDidLoad {
[super viewDidLoad];
// Get home directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
homedirectory = [paths objectAtIndex:0];
masterindexpath = [homedirectory stringByAppendingPathComponent:@"MasterIndex"];
// Get master course list or create it if necessary
NSFileManager *fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:masterindexpath] == NO)
{
NSMutableDictionary *temporarydictionary = [NSMutableDictionary dictionary];
[temporarydictionary writeToFile:masterindexpath atomically:NO];
[temporarydictionary release];
}
[classFilenameGlossary initWithContentsOfFile:masterindexpath];
[homedirectory retain];
[masterindexpath retain];
}
forKey:その後、私は、setObjectメソッドを使用してアイテムを追加しますが、辞書が変わることはありません。もともと私は戻って、このClassListがファイルへのポインタを使用して別のビューコントローラでこれをやっていたが、私は動作しませんでしたことを発見したら、私は単純化し、ちょうどClassListが、ファイル内の任意のサンプルオブジェクトとキーを設定しようとしました。
[classFilenameGlossary setObject:@"sample filename" forKey:@"sample classname"];
私は、デバッガ変数のリストを見たのだが、classFilenameGlossaryが適切0キー/値のペアでNSMutableDictionaryとして識別さを示しています。私は、エラーの任意の並べ替えを取得していませんよ。辞書は、単純に変わることはありません。現時点では、ファイルmasterindexpathからロードされた辞書は、(私はまだアイテムを追加することができていないため)空であるが、それは辞書にアイテムを追加することができることから私を保つべきではありません。
私は、iPhoneのプログラミングでの総初心者ですので、私は私が欠けていることを基本的な何かがあると確信しています。私は任意の助けをいただければと思います。
正しい解決策はありません
他のヒント
この行:
[classFilenameGlossary initWithContentsOfFile:masterindexpath];
このようになります。
classFilenameGlossary = [[NSMutableDictionary alloc] initWithContentsOfFile:masterindexpath];
あなたはそれが初期化されたことがない理由ですので、NSMutableDictionaryのためにメモリを割り当てるのを忘れます。