我正在编写一个使用 Core Data 来持久化模型的 iPhone 3.0 应用程序。我希望使用默认数据集安装应用程序。在为 iPhone 结论: 最后,我编写了一个通用的 XML 处理程序。元素名称映射到 Objective-C 类名称和属性名称。元素中的 PCDATA 值被转换为在元素命名的属性上声明的类型。子元素或属性元素被解析为对象实例——因此通过解析 XML 文档构建了对象图。不过,我必须首先掌握 Objective-C 运行时:-)示例目标类:@interface Widget : NSObject {@private NSString* name; NSSet* sprockets;}@property (nonatomic, retain) NSString* name;@property (nonatomic, retain) NSSet* sprockets;- (void)addSprocketsObject:(Sprocket*)value;@end@interface Sprocket : NSObject {@private NSString* name; NSNumber* canFly; NSNumber* wheels;}@property (nonatomic, retain) NSString* name;@property (nonatomic, retain) NSNumber* canFly;@property (nonatomic, retain) NSNumber* wheels;@end示例默认数据:<data> <Sprocket id="sprocket-1"> <name>Sprocket1</name> <wheels>4</wheels> </Sprocket> <Widget id="widget-1"> <name>MyWidget</name> <sprockets> <Sprocket ref-id="sprocket-1"/> <Sprocket id="sprocket-2"> <name>Sprocket2</name> <canFly/> </Sprocket> <Sprocket id="sprocket-3"> <name>Sprocket3</name> </Sprocket> </sprockets> </Widget></data> (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 两个选项浮现在脑海中: 从一些合理的数据格式(XML、JSON 等)编写一个导入器,并在第一次运行时将其导入到 Core Data 上下文中,然后将上下文保存到持久存储中。 如果您的应用只需要一个持久存储,您可以预先填充它并使用应用资源部署持久存储。如果您需要多个持久性存储,并且都预先填充了相同的默认数据,则选项 1 可能会更容易,但您可以使用 NSPersistenStoreCoordinator 的 migratePersistentStore:toURL:options:withType:error:(或 iPhone Core Data 中的等效项 - - 仍在保密协议(protocol)下)为每个需要的新商店从预装商店创建新商店。 根据我的经验,实现选项 1 的代码与预填充持久存储所需的代码几乎相同,所以也许真的只有一个具有两种观点的选项。 (adsbygoogle = window.adsbygoogle || []).push({}); 10-08 01:02