• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS/Core Data 实体与预定义数据的关系

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:56:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有两个 Objective-C 核心数据实体——比如 Person 和 Nationality。 Person 与 Nationality 具有一对一关系,而 Nationality 与 Person 具有一对多关系。此外,Person 类可以有任意数量的对象/行,而 Nationality 将有一个包含 200 个奇数实例的预定义列表。所以除了这 200 个对象之外,Person 应该不能为自己分配国籍。

有人可以建议我们如何编写代码,或者如果有可用的示例代码?恐怕我似乎无法开始了解如何利用 setValue: forKey: here...

非常感谢!



Best Answer-推荐答案


假设您的国籍实体具有唯一标识该国籍的“名称”属性。您可以提供任何方式的 UI 以从用户那里获取此信息。它可以是输入一个字符串或获取所有国籍并将它们放在一个表格或某种选择器中。

如果您想要所有国籍,这很容易。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName"Nationality"];
NSError *error;
NSArray *nationalities = [moc executeFetchRequest:fetchRequest error:&error];
if (nationalities == nil) {
    // handle error
} else {
    // You now have an array of all Nationality entities that can be used
    // in some UI element to allow a specific one to be picked
}

如果您想根据名称的字符串查找它...

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName"Nationality"];
fetchRequest.predicate = [NSPredicate predicateWithFormat"name = %@", nationalityName];
fetchRequest.fetchLimit = 1;
NSArray *nationalities = [moc executeFetchRequest:fetchRequest error:&error];
if (nationalities == nil) {
    // handle error
} else {
    NSManagedObject *nationality = [nationalities firstObject];
    // If non-nil, it will be the nationality object you desire
}

创建人并分配其国籍也很简单......

if (nationality) {
    NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName"erson" inManagedObjectContext:moc];
    // Set any attributes of the Person entity
    [person setValue"Fred Flintstone" forKey"name"];

    // Assign its nationality, and as long as the relationship is setup with
    // inverse relationships, the inverse will be automatically assigned
    [person setValue:nationality forKey"nationality"];
}

关于iOS/Core Data 实体与预定义数据的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623173/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap