我不知道这段代码错在哪里。请帮助,它应该从字典中读取值,并使用该值来调用图像。我试图将值读作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);
}
答案 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
,如下所示:
@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];
}