这是我第一次提问,因为我是新来的。非常感谢您的回答!我很感激你的时间。
使用 Xcode 5.1.1
这是我的问题,在模拟器或实际设备上进行测试时,结果会有所不同。 查看食物图片上附带的截图。当我在模拟器iPhone Retina(4英寸64位)上测试时,结果是正确的,食物图像正确显示并与文本匹配。
当我在模拟器iPhone Retina(4英寸)上测试时,结果不正确,食物图像显示与文本不匹配。
我也测试实际设备,如iPad Air显示器正确但iPad3不正确。食物图像显示与文本不匹配。
你能帮我解决一下这个问题吗?我不明白为什么相同的代码,但它产生不同的结果。
for (NSUInteger i=0; i<30; i++)
{
UIImage *anImage = [UIImage imageNamed:[NSString stringWithFormat:@"food%d.jpg", (int)i+1]];
[arrimagefood addObject:anImage];
}
[ArrforAllDicFood addObjectsFromArray:[DictionaryForEnglishFood allKeys]];
[TableForFood reloadData];
从多个评论中移动并格式化代码:
- (void)viewDidLoad {
[super viewDidLoad]; DictionaryForEnglishFood=[[NSMutableDictionary alloc]init];
DictionaryForLaoFood=[[NSMutableDictionary alloc]init];
DictionaryForPythnFood=[[NSMutableDictionary alloc]init];
DictionaryForImageFood=[[NSMutableDictionary alloc]init];
DictionaryForAudioFood=[[NSMutableDictionary alloc]init];
ArrforAllDicFood=[[NSMutableArray alloc]init];
arrimagefood=[[NSMutableArray alloc]init];
// add English German food
// [DictionaryForEnglishFood setValue:@"Asparagus" forKey:@"food1"];//5
// [DictionaryForEnglishFood setValue:@"Lobscouse" forKey:@"food2"];//29
// [DictionaryForEnglishFood setValue:@"Sauerkraut" forKey:@"food3"];//22
// [DictionaryForEnglishFood setValue:@"Potatoes" forKey:@"food4"]; //16
// [DictionaryForEnglishFood setValue:@"Pumpkin bread" forKey:@"food5"];//11
// [DictionaryForEnglishFood setValue:@"Asparagus Sauce" forKey:@"food6"];//6
// ......
// Add German words
// [DictionaryForLaoFood setValue:@"Spargel" forKey:@"food1"];//5
// [DictionaryForLaoFood setValue:@"Labskaus" forKey:@"food2"];//29
// [DictionaryForLaoFood setValue:@"Sauerkraut" forKey:@"food3"];//22
// [DictionaryForLaoFood setValue:@"Pellkartoffeln" forKey:@"food4"]; //16
// [DictionaryForLaoFood setValue:@"Kürbisbrot" forKey:@"food5"];//11
// [DictionaryForLaoFood setValue:@"Spargelsoße" forKey:@"food6"];//6
// ........
// Add German pronounciation
// [DictionaryForPythnFood setValue:@"Shpahrg-uhl" forKey:@"food1"];//5
// [DictionaryForPythnFood setValue:@"Lahbs-cows" forKey:@"food2"];//29
// [DictionaryForPythnFood setValue:@"Sour-krout" forKey:@"food3"];//22
// [DictionaryForPythnFood setValue:@"Pehl-car-tohf-ehln" forKey:@"food4"]; //16
// [DictionaryForPythnFood setValue:@"Koorb-is-broht" forKey:@"food5"];//11
// [DictionaryForPythnFood setValue:@"Shpahrg-uhl-sohs-uh" forKey:@"food6"];//6
// ......
// Add German audio
// [DictionaryForAudioFood setValue:@"aspargus" forKey:@"food1"];//5
// [DictionaryForAudioFood setValue:@"lobscouse" forKey:@"food2"];//29
// [DictionaryForAudioFood setValue:@"sauerkraut" forKey:@"food3"];//22
// [DictionaryForAudioFood setValue:@"potatoes" forKey:@"food4"]; //16
// [DictionaryForAudioFood setValue:@"pumpkin bread" forKey:@"food5"];//11
// [DictionaryForAudioFood setValue:@"aspargus sauce" forKey:@"food6"];//6
// ....
for (NSUInteger i=0; i<30; i++) {
UIImage *anImage = [UIImage imageNamed:[NSString stringWithFormat:@"food%d.jpg", (int)i+1]];
[arrimagefood addObject:anImage];
}
[ArrforAllDicFood addObjectsFromArray:[DictionaryForEnglishFood allKeys]];
[TableForFood reloadData];
}
-(UITableViewCell )tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if([[ UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone) {
static NSString *CellIdentifier = @"CustomCellPlace";
CustomCellPlace *cell= (CustomCellPlace) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// create a uitableviewcell
// if(cell == nil) {
// NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCellPlace" owner:self options:nil];
// for (id currentObject in topLevelObjects) {
// if ([currentObject isKindOfClass:[UITableViewCell class]]) {
// cell = currentObject;
// }
// }
// }
cell.tag=indexPath.row;
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView = [UIView new] ;
cell.selectedBackgroundView = [UIView new] ;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.lb1.text=[DictionaryForEnglishFood objectForKey:[ArrforAllDicFood objectAtIndex:indexPath.row]];
cell.lb2.text=[DictionaryForLaoFood objectForKey:[ArrforAllDicFood objectAtIndex:indexPath.row]];
cell.lb3.text=[DictionaryForPythnFood objectForKey:[ArrforAllDicFood objectAtIndex:indexPath.row]];
for(int i=0; i<[arrimagefood count];i++) {
NSUInteger str=indexPath.row;
cell.imageview.image=[arrimagefood objectAtIndex:str];
} return cell;
}
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [ArrforAllDicFood count];
}
问题在于测试模拟器iPhone(4英寸)或iPhone5等实际设备时,结果(文本)没有订购/匹配食物图像但运行模拟器iPhone(4英寸64位)匹配/订购与食物形象。那么如何更改代码以使其适用于iPhone(4英寸)和iPhone(4英寸64位)。
食物图像显示从1-30的顺序,但只有文本以某种方式改变,我不知道该怎么做。再次感谢。
答案 0 :(得分:1)
字典没有订单,因此`allKeys'方法可以返回任何订单。甚至不能保证订单从一个呼叫到另一个呼叫是相同的。添加,删除或更改条目也可能导致返回不同的订单。
您需要做的是将图像名称(或名称索引)与食物名称一起包含在一个结构中。依靠订单不是一个好的解决方案。
模拟器就是这样,它运行的代码是为英特尔处理器模拟设备而编译的。设备代码是为ARM处理器编译的。人们可以预期,因为任何键的顺序是正确的,所以你会看到差异。
模拟器通过模拟相同的指令运行其他处理器代码,结果在每个设备上的顺序相同,但是也可以按任何顺序排列。