从plist读取并加载到图像名称/标签文本中

时间:2011-12-15 03:37:10

标签: iphone objective-c xcode plist

我不知道这段代码错在哪里。请帮助,它应该从字典中读取值,并使用该值来调用图像。我试图将值读作label.text,但我没有得到任何结果。

我可以调用的唯一一个来自nslog。

for (id key1 in dictionary)
{
    NSMutableString *textnamed = [dictionary objectForKey:key1];
    NSMutableString *imageDisplay =[NSMutableString stringWithFormat:@"%@.png",[dictionary objectForKey:key1]];

    eyeImageSaved.image = [UIImage imageNamed:imageDisplay];

    labelSaved.text = textnamed;

    NSLog(@"%@",textnamed);
}

3 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。首先,您应该考虑使用NSString而不是NSMutableString,因为它应该更快。其次,为什么要将字典对象放在字符串中,然后在下一行再次调用字典对象?第一行是不必要的。字典条目完全有可能不是字符串,这就是你遇到问题的原因。你应该像这样写NSString *textnamed = (NSString *)[dictionary objectForKey:key1]。此外,imageNamed只能用于文件包中的文件。你确定那些照片存放在那里吗?您可能还有其他一些问题。这究竟出了什么问题?

答案 1 :(得分:0)

nameDataFormArray_& imageDataFormArray_NSMutableArray。两者都有字符串,并根据字符串(图像名称)查找图像。

- (void)readInfoFromThePlist
{    
    NSString* PListPath=[[NSBundle mainBundle] pathForResource:@"dataList" ofType:@"plist"];
    NSMutableArray* tempDataList=[[NSMutableArray alloc ] initWithContentsOfFile:PListPath];
    for(NSDictionary *dataDict in tempDataList)
    {
        [nameDataFormArray_ addObject:[dataDict objectForKey:@"name"]];
        [imageDataFormArray_ addObject:[dataDict objectForKey:@"imagepath"]];
    }  

    [tempDataList release];
}

答案 2 :(得分:0)

我解决了我的问题。上面的代码没有任何问题,我犯的错误是应该保存我的变量并存储在plist中作为图像名称的对象变为null。所以我将对象添加到appdelegate.h,如下所示:

的AppDelegate

@interface AppDelegate : UIResponder <UIApplicationDelegate>  
{
    NSString *imageNameHolder;
}  
@property (retain, nonatomic) NSString *StorageDecider;  

查看控制器

- (IBAction)lips2:(id)sender {  
    imageNameHolder = @"lips_blue";
} 

-(void)writeNewPlist  
{  
    AppDelegate* ref = (AppDelegate*) [[UIApplication sharedApplication] delegate];
    [dictionary setObject:imageNameHolder forKey:@"image1"];  
        [dictionary writeToFile:finalPath atomically:YES];  
}