這是我的問題:我將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