这是我的问题:我将plist加载到NSArray中。我没有在我的应用程序的任何地方声明任何NSDictionary。为什么从pList加载一个NSArray将我的数组转换为NSDictionary?
现在我有一个UIPickerView。我希望它从我的视图控制器的私有成员的NSArray中填充。我的选择器需要实施“titleForRow”方法。如果我实现它这样的崩溃:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [airportList objectAtIndex:row];
}
但是如果我实现它这样它的工作原理:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSDictionary *stupid = (NSDictionary *)airportList;
NSString *airPortName = [stupid objectForKey:[NSString stringWithFormat:@"Item%d",row]];
NSLog(@"%@",airPortName);
return airPortName;
}
为什么我的NSArray自动转换为一个NSDictionary?
编辑*: 以下是我从plist中产生的NSArray我:
-(NSArray *)createAirportList
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"AirportList" ofType:@"plist"];
NSData *plistAirportNames = [NSData dataWithContentsOfFile:path];
NSString *error;
NSPropertyListFormat format;
NSArray *airportNames = [NSPropertyListSerialization propertyListFromData:plistAirportNames mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];
if(!airportNames)
{
NSLog(@"Could not read the airport name. Error:%@",error);
}
return airportNames;
}
我的plist就是关键:Item0字符串 “嗒嗒”。所以,它有点像字典,但为什么我不能使用我创建的NSArray对象?什么是自动类型转换?
你可以在你创建airportList的地方显示代码吗? – jonkroll 2012-02-28 23:32:34
你如何储存plist,你如何加载它? – Felix 2012-02-28 23:33:22
我在编辑中添加了我的plist加载方法。 @Zaph我声明了一个NSArray,而不是一个NSDictionary。我知道一个NSDictionary也可以是一个NSArray,但我不明白为什么,如果是这种情况,我不能使用objectAtIndex访问我的NSArray的内容。 – Mokgra 2012-02-29 00:45:12