核心数据是要走的路,但学习曲线陡峭。你应该花一些时间来学习它。
对于您的目的来说,使用 plist 会更容易而且可能就足够了。这些是 Apple 特定的 xml 文件,结构非常简单。您可以直接在 Xcode 中编辑它们,并且格式非常透明。
然后,您可以一次从 plist 加载所有数据,并根据第一个选择器填充第二个选择器。
或者,您可以使用 JSON 文件。这些甚至更简单,作为 Web 程序员,您可能对这些很熟悉。
一些提示:
您的数据应具有以下结构:字典数组;每个字典都有一个品牌键和一个用于另一个数组的键,一个模型列表。这个子数组是一个带有名称键的字典(如果您的应用程序中需要它,可能还有更多)。
您可以像这样加载名为“Data.plist”的 plist 文件(JSON 是模拟的):
NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSArray *data = [NSArray arrayWithContentsOfFile:path];
现在您可以获得这样的品牌列表(假设您的品牌名称键是“名称”):
NSArray *brands = [data valueForKeyPath:@"name"];
还有一个品牌的清单:
NSArray *models = [[[data filteredArrayUsingPredicate:[NSPredicate
predicateWithFormat:@"name = %@", @"Ford"]] objectAtIndex:0]
valueForKey:@"models"]);
要对第一个选择器视图的选择做出反应,请确保您的视图控制器是选择器视图的委托并覆盖pickerView:didSelectRow:inComponent:
。
tags
您可以通过在回调方法中分配和检查它们来区分这些委托方法中的选择器。
这是您的 plist 结构的示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>name</key>
<string>Ford</string>
<key>models</key>
<array>
<string>Mustang</string>
<string>Capri</string>
</array>
</dict>
<dict>
<key>name</key>
<string>VW</string>
<key>models</key>
<array>
<string>Polo</string>
<string>Golf</string>
</array>
</dict>
</array>
</plist>
希望这可以帮助。