【发布时间】:2014-03-30 07:28:40
【问题描述】:
假设我有一个应用程序,允许您在核心数据中创建一个简单的配置文件,该配置文件将具有不同的用户属性,如姓名、性别、年龄等。这个实体 Profile 已创建并保存。深入了解配置文件后,会显示汽车的表格视图,其中包含从导入的 sql 数据库生成的数据,该数据库是使用实用程序应用程序创建的,该实用程序应用程序使用核心数据模型预填充数据。每个Car也有不同的属性,比如品牌、型号、年份、颜色等。
假设我希望能够单击此 tableview 中的每辆汽车并选择该字段。这样做时,我希望将变量 isSelected 设置为 1 以跟踪用户选择了此数据库中的哪些汽车。
到目前为止,使用具有一对多关系的单个 Profile 很容易做到这一点:Profile <-->> Car。
问题
我遇到的问题是使用 多个 个人资料进行上述操作。
模型设置为Profile <<-->> Car -
使用多个配置文件,我无法弄清楚如何使导入的 sql 数据库保持静态(因为这是每个新配置文件将开始使用的基本数据),然后有另一个数据库或实体或其他我没有想到的东西每个Car 都有isSelected = 1 or 0 属性。
起初我以为我可以通过这样做为每个 Car 创建一个副本:
Profile *_currentProfile;
for (loop through all cars in the db) {
Car *copiedCar = [NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.appDelegate.managedObjectContext];
copiedCar.make = originalCar.make;
copiedCar.model = originalCar.model;
...
[_currentProfile addCarObject:copiedCar];
}
我认为这将允许我创建每个Car 的副本并将其放入当前的Profile 并修改isSelected 属性而不影响原始数据库。然后,这可以允许制作更多的配置文件,而不会相互干扰。当其他配置文件开始对Cars 执行提取请求时,就会出现问题。来自后续配置文件的获取请求会生成 2x、3x、..,可用 Cars 的数量取决于创建的配置文件的数量,因为每个创建的配置文件本质上都会生成另一个完整的 Cars 列表
问题 所以我的模型比上面的这个 Car 例子复杂一点,但想法是一样的.. 我应该如何构建 Core Data 模型以允许多个配置文件自定义现有的核心数据 sql 数据库,而不需要多个自定义干扰每个轮廓?在此将没有注销/登录功能。配置文件将显示在主屏幕上,您只需选择要输入的配置文件。我应该:
- 为每个创建的配置文件有单独的 sql 数据库吗?
- 这样的核心数据结构是否可以工作:
Profile <<-->> Car <-->> Custom在Custom实体中使用isSelected属性? - 其他一些我没有想到的...
我尝试做前两个,但我只是做的不对,让自己很困惑。
【问题讨论】:
-
所以你可能会在未来的更新中替换预装的汽车?连接到个人资料的汽车意味着它已被选中?
-
两者都是。预装的汽车数据库将来可能会更新。我希望选定的汽车与各种配置文件相关联,而不更改原始数据库。