0

我在主视图控制器的文件中创建了一个NSMutableDictionary调用,并添加了此代码以从我的文件中引入信息。*temp.h.plist

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
    temp=[NSMutableDictionary dictionaryWithContentsOfFile:path];
}

在同一个视图控制器中,我添加了一个按钮操作并添加了以下代码:

-(IBAction)mathButton:(UIButton *)_sender
{
    label1.text = [temp objectForKey:@"m1name"];
}

其中 "label1 是 中的文本字段.xib,并且m1name是 中的键之一.plist

但是当我运行它时,它不起作用,并突出显示label1.text = [temp objectForKey:@"m1name"];并称其为错误访问。

我已经坚持了几天,并尝试了很多东西。一个答案真的很有帮助。

谢谢

4

2 回答 2

0
temp=[NSMutableDictionary dictionaryWithContentsOfFile:path];

您没有保留通过dictionaryWithContentsOfFile:path. 您应该将该行更改为:

temp = [[NSMutableDictionary dictionaryWithContentsOfFile:path] retain];

(并确保它在 中发布dealloc),或者,如果temp是属性,则通过

self.temp = [NSMutableDictionary dictionaryWithContentsOfFile:path];
于 2013-05-28T23:30:24.617 回答
0

在.h中:

@interface ...
{
    NSMutableDictionary* temp;
}

以 .m 为单位:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString* path = [[NSBundle mainBundle] pathForResource: @"Data"
                                                     ofType: @"plist"];

    BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: path];

    if (exists)
    {
        temp = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
        NSLog(@"%@", [temp description]);
    }
}

- (IBAction) mathButton: (UIButton *)_sender
{
    label1.text = [temp objectForKey: @"m1name"];
}

如果 MRC:

- (void) dealloc
{
    [temp release];

    [super dealloc];
}
于 2013-05-29T00:37:43.440 回答