私の問題は次のとおりです。NSArrayにplistをロードします。私はどこに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
どのようにplistを保管し、どのようにロードしますか? – Felix
上記の私のplistローディング方法を編集に追加しました。 @ Zaph NSDictionaryではなくNSArrayを宣言しています。私はNSDictionary NSArrayもすることができますが理解していますが、私は理解していない場合、その場合は、NSArrayのobjectAtIndexを使用してアクセスできません。 – Mokgra