我有一个奇怪的需求,我怀疑答案将是“它不意味着这样工作”,但这里去(不,我还没有尝试过这个)-我需要能够击中各种数据存储在CoreData的基础上应用程序用户的登录。想象一下,一个电话被交给多个人,每个人都有自己的登录名。因此,如果Bob拥有手机并登录,它会创建/使用Bob独有的CoreData数据存储,然后当Bob注销并将手机交给桑迪时,她会登录并进行相同的交易。
我知道您在CoreData初始化代码中提供了CoreData数据存储的名称,但我读过许多文章,人们说如果该名称不是应用程序的名称,CoreData就会变得古怪。我不确定这是真的(还是真的?)),但我只是在这里吠错了树?
想法呢?
1条答案
按热度按时间kqhtkvqz1#
Core Data存储的名称不需要与应用的名称匹配。事实上,单个应用程序可以有多个名称不同的数据存储。
要实现这一点,您需要创建
NSPersistentContainter
,提供数据存储名称和托管对象模型。也就是说,您需要
NSPersistentContainer(name: storeName, managedObjectModel: managedObjectModel)
而不是NSPersistentContainer(name: storeName)
初始化程序。最具挑战性的部分是获取当前版本数据模型的
NSManagedObjectModel
,但下面的代码片段将向您展示如何做到这一点: