gpt4 book ai didi

iphone - 无法设置对象:forKey: in NSMutableDictionary

转载 作者:行者123 更新时间:2023-12-03 18:55:04 25 4
gpt4 key购买 nike

我确信我在尝试编写的一个简单 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;

我在 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];

}

后来,我使用 setObject:forKey: 添加一个项目,但字典永远不会改变。最初,我是在另一个 View Controller 中使用返回到此 ClassList 文件的指针来执行此操作,但是一旦我发现这不起作用,我就进行了简化并尝试在 ClassList 文件中设置任何示例对象和键:

    [classFilenameGlossary setObject:@"sample filename" forKey:@"sample classname"];

我查看了调试器变量列表,它显示 classFilenameGlossary 已正确标识为具有 0 个键/值对的 NSMutableDictionary。我没有收到任何错误;字典永远不会改变。目前,从文件 masterindexpath 加载的字典是空的(因为我还无法添加任何项目),但这不应该阻止我向字典添加项目。

我是 iPhone 编程的初学者,所以我确信我缺少一些基本知识。如果有任何帮助,我将不胜感激。

最佳答案

这一行:

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

应该看起来像这样:

classFilenameGlossary = [[NSMutableDictionary alloc] initWithContentsOfFile:masterindexpath];

您忘记为 NSMutableDictionary 分配内存,因此它永远不会初始化。

关于iphone - 无法设置对象:forKey: in NSMutableDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/893422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com