Core Data 中多语言数据的良好实践

2023-11-24

我的 iPhone 应用程序中需要一个多语言 coredata 数据库。我可以为每种语言创建不同的数据库,但我希望在 iphone sdk 中存在一种自动方式来管理不同语言核心数据中的数据,例如资源和字符串。

有人有一些提示吗?


我做了一些与 Shortseller 类似的事情,但没有使用类别。

alt text

InternationalBook and LocalizedBook都是具有一对多关系的自定义管理对象(一本国际书籍与许多本地化书籍)。

在实施中InternationalBook,我添加了一个自定义访问器title:

- (NSString *)title {
    [self willAccessValueForKey:@"title"];
    NSString *locTitle = nil;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"locale==%@", [DataManager localeString]];
    NSSet *localizedSet = [self.localizedBook filteredSetUsingPredicate:predicate];
    if ([localizedSet count] > 0) {
        locTitle = [[localizedSet valueForKey:@"localizedTitle"] anyObject];
    }
    [self didAccessValueForKey:@"title"];
    return locTitle;
}

[DataManager localeString]是一个返回用户的语言和国家/地区代码的类方法:en_US, fr_FR等。请参阅文档NSLocale了解详情。

请参阅《核心数据编程指南》的“自定义属性和一对一关系访问器方法”部分,了解以下内容的说明willAccessValueForKey: and didAccessValueForKey:.

填充数据时,我抓取一个表示用户当前区域设置的字符串([DataManager localeString]),并将其与本地化的书名一起存储在一个新的LocalizedBook目的。每个LocalizedBook实例被添加到NSMutableSet,代表一对多关系。

NSMutableSet *bookLocalizations = [internationalBook mutableSetValueForKey:@"localizedBook"]; // internationalBook is an instance of InternationalBook
// set the values for locale and localizedTitle
LocalizedBook *localizedBook = (LocalizedBook *)[NSEntityDescription insertnNewObjectEntityForName:@"LocalizedBook" inManagedObjectContext:self.bookMOC];
localizedBook.locale = [DataManager localeString];
localizedBook.localizedTitle = theLocalizedTitle; // assume theLocalizedTitle has been defined.
[bookLocalizations addObject:localizedBook];
[bookLocalizations setValue:localizedBook forKey:@"localizedBook"];

由于本地化标题存储在LocalizedBook管理对象,您可以使title属性瞬态,但如果你这样做,你就不能使用title在谓词中。

这种方法的好处是,一对多关系的实现对任何消费者都是透明的。您只需请求internationalBook.title自定义访问器根据幕后用户的区域设置返回适当的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Core Data 中多语言数据的良好实践 的相关文章

  • iPhone应用程序中可以使用什么来代替工具提示?

    iPhone应用程序中可以使用什么来代替工具提示 触摸屏系统中工具提示的最佳替代品 工具提示通常是为具有光标的操作系统保留的 在触摸屏应用程序中 根本不需要工具提示 当您的应用程序在使用时 用户应该始终知道菜单在哪里 所有按钮的用途等等 因
  • 用于桌面数据库应用程序的 Python 框架

    是否有一个框架可以为Python开发桌面数据库应用程序 一些带有CRUD屏幕的屏幕 我正在寻找类似于 Windows 窗体的东西 能够将 TextField Combos 和其他 UI 隐喻与datasets连接到关系数据库例如 MySQL
  • MPMediaItemPropertyPercientID 的 NSNumber 到 NSString 并再次返回

    我使用以下代码循环播放 iPhone 音乐库中的所有歌曲 NSArray songs NSArray alloc initWithArray MPMediaQuery songsQuery collections for MPMediaIt
  • UIPageViewController:获取当前页面

    在过去的几天里 我一直在努力解决这个问题 经过所有这些杂耍 我发现我所需要的只是数据源方法中的当前索引 以使用当前可见页码进行更新 我有这个UIPageViewController数据源方法 我需要使用当前索引来获取委托方法的当前可见页面p
  • 从 iPhone 上传图像/音频到服务器无法发送大图像

    我不知道这是我的iPhone代码还是服务器的问题 我正在使用 NSURLConnection 将图像 音频从 iPhone 上传到服务器 如果图像和音频的大小小于 60KB 则可以正常上传 如果超过 60KB 我会从服务器收到 400 Ba
  • 我可以/如何确定设备是否有振动?

    我有一些设置可以启用 禁用某些操作的振动 但我发现如果设备没有振动能力 则显示它们毫无意义 有没有办法检查用户是否正在使用 iPod touch 以及它是否有振动 我不确定除了进行模型检查之外还有其他方法可以做到这一点 这可能不是一个很好的
  • Health 处理多个步骤源的方式与 HealthKit 不同——swift

    我的 Swift iOS 应用程序与 HealthKit 连接 向用户显示他们当天到目前为止已经走了多少步 在大多数情况下 这是成功的 当步数的唯一来源是 iPhone 内置计步器功能记录的步数时 一切正常 并且我的应用程序显示的步数与健康
  • 发射图像偏离 20 像素(在 y 轴上)

    我有一个名为 Default png 的 320 480 大小的启动图像 并且该应用程序配置为还显示状态栏 当我的应用程序启动时 图像的前 20 个像素被状态栏截断并隐藏 根据 Apple 的 HIG 列出的 iPhone 和 iPod T
  • 仅在导航弹出后分组 UITableViewCell 上才会出现黑色角

    我不是图形专家 但我以某种方式设法通过使用一些 CG 代码将背景视图设置为 backgroundView 来制作一些好看的自定义分组 UITableViewCells 在 3 1 3 之前的所有 SDK 中 也许是 3 2 我还没有在 iP
  • Core Data + CloudKit 无法在其他设备上自动刷新?

    我的 SwiftUI 应用程序与 Core Data CloudKit 一起使用 我可以从 Mac 或 iPhone 将新条目保存到数据库中 该应用程序对所有设备使用完全相同的项目 代码库 唯一的问题是我需要关闭应用程序并重新打开它才能查看
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin
  • Objective-C 2.0中的多线程问题

    我有我的主应用程序委托 其中包含一个返回对象的方法 该应用程序委托在主线程上运行 我还有一个在不同线程上运行的 NSOperation 除了希望有时能够在主线程上调用我的应用程序委托方法之外 我还需要从 NSOperation 线程中调用它
  • UIFont Woes(一些自定义字体加载,但其他字体不加载)

    我在加载某些自定义字体时遇到问题 我遵循了这个问题的 400 多个赞同的传统答案中的建议 并且它非常适合一个项目 然而 在我正在从事的另一个项目中 我遇到了加载 UIFont 的问题 这些问题与帖子中发现的问题有些相似向 UIAppFont
  • 如何将 AdMob 广告添加到 UITableView

    我正在尝试将 AdMob 广告添加到表格视图中 我希望它出现在每 10 个单元格中 例如 如果您有 Reddit 应用程序的免费版本 就像它一样 我尝试遵循 AdMob 文档 但没有任何运气 而且我确信我遗漏了一些东西 任何人都可以阐明一种
  • 如何使用 NSUndoManager 支持替换 UITextView 中的文本?

    我希望能够以编程方式替换 UITextView 中的某些文本 因此我将此方法编写为 UITextView 类别 void replaceCharactersInRange NSRange range withString NSString
  • 更新表格视图图像子视图中的图像的最佳方法是什么?

    具体来说 如何从 uitableview 单元格中获取图像子视图 我的表视图从网络异步获取数据 当我第一次创建图像视图时 我通过以下方式添加了视图 imageView setImage image cell addSubview image
  • 将 MS-Access 表单结果导出到 Excel?

    我对 Access 有点陌生 我在将 MySQL 和 Oracle 与 PHP 集成以创建基于 Web 的数据库搜索引擎方面拥有一些经验 但我很难理解 Access 的某些概念 我有一个小型数据库 其中包含大约 200 个条目 每个条目有
  • 推送通知中的设备令牌

    我只想向某些用户发送推送通知 根据我在苹果文档中所经历的内容 注册推送通知的代码是这样的 void applicationDidFinishLaunching UIApplication app other setup tasks here
  • 如何消除圆形矩形按钮周围的间隙而不删除其周围的边框? [复制]

    这个问题在这里已经有答案了 顺便提一句 这可能看起来像是关于按钮阴影问题的问题的重复 但它们有单调的背景 在我的例子中 背景是一些图像 所以简单的边框不能解决问题 While making app for iPhone Pad I noti
  • AVAudioPlayer 重置当前播放的声音并从头开始播放

    我在使用 AVAudioPlayer 时遇到问题 我想重置当前正在播放的播放器并再次播放 我尝试以下但没有运气 声音播放一次 但第二次我选择按钮时它会停止声音 第三次再次启动声音 Stop the player and restart it

随机推荐

  • 同步两个RichTextBox的滚动位置?

    在我的申请表中 我有两个RichTextBox对象 它们的文本行数始终相同 我想 同步 这两者之间的垂直滚动 以便当用户更改其中一个的垂直滚动位置时 另一个滚动相同的量 我该怎么做呢 感谢杰伊的回答 经过更多搜索 我也找到了所描述的方法he
  • Formik + 是的:如何在安装时立即验证表单?

    我想在安装表单时显示字段错误 提交后不行 Yup const validation Yup object shape field Yup string required Required Formik
  • golang中星号(*struct)表示法是什么意思

    NewReaderSize returns a new Reader whose buffer has at least the specified 43 size If the argument io Reader is already
  • geom_area 绘图默认堆叠区域

    我在用geom area绘制一个非常简单的数据集 绘图时使用geom line一切正常 但是当我切换到geom area绘制更高的值 我认为查看图表是代表我的问题的最佳方式 require tidyverse x lt structure
  • 在 CPanel 中编辑 DNS 记录的 PHP 脚本

    我想变得自给自足 因此不需要 DNSDynamic 和 DYNDNS 等服务 而且我不喜欢为我自己可以做的服务付费 场景如下 我的主网站由托管公司托管 我还有一个家庭服务器 上面有我的音乐等 但问题是我的 ISP BT 不向消费者提供静态
  • 确保第一个 ajax 函数在第二个之前完成

    我有一个 JavaScript 函数 它使用 jQuery 发出两个连续的 Ajax 请求 我想确保在调用第二个函数之前第一个请求已加载 我有办法做到这一点吗 要么指定async false in the ajax选项 或者进行第二个 aj
  • 样式图标标记 - 融合表

    这是为像我这样的其他新手提供的帮助 我花了很长时间才弄清楚如何在我的融合表项目中将不同的图标分配给不同类别的标记 我发现文档有限且令人困惑 我想如果我感到困惑 那么其他人可能也会如此 在其他人的帮助和大量测试的帮助下 我现在可以与您分享两种
  • JMeter、JUnit 和 Spring Java 配置

    是否可以使用 JUnit 插件 采样器和 Spring Java 配置来运行 JMeter 当我尝试执行此操作时 未创建 Spring 自动装配 bean 尽管测试用例运行 但由于尚未创建 bean 我收到了空指针异常 我正在使用Sprin
  • 如何从 char 数组进行转换 [char; N] 到字符串切片 &str?

    给定一个固定长度char数组如 let s char 5 h e l l o 我如何获得 str 你不能没有一些分配 这意味着你最终会得到一个String let s2 String s iter collect 问题是 Rust 中的字符
  • 如何修复我的包中的“.dist-info 目录未找到”?

    我有一个 Python 2 软件包 我正在尝试将其升级到 Python 3 它是由曾经在我现在所在的同一团队工作的某个人编写的 但他已不再在公司工作 不幸的是 没有人离开公司团队能够提供帮助 对包的文件运行 2to3 后 我运行python
  • R匹配2个以上条件并返回响应值

    您好 我有两个数据集 其中第一个是一组索引 ind1 lt rep c E W times 20 ind2 lt sample 100 150 40 y lt c 1 40 index lt data frame cbind ind1 in
  • 如果内存大小相等,如何将 C 结构体转换为另一种结构体类型?

    我有 2 个矩阵结构意味着相同的数据 但具有不同的形式 如下所示 Matrix type 1 typedef float Scalar typedef struct Scalar e 4 Vector typedef struct Vect
  • 该字符串未被识别为有效的日期时间。有一个从索引 0 开始的未知单词

    我有以下 C 在尝试将字符串解析为日期时间时出现上述错误 DateTime backupdate System Convert ToDateTime imageflowlabel Text DateTime currentdate Syst
  • gTTS直接输出

    我想让聊天机器人做出回应audio和文字 所有使用 gTTS 的示例代码似乎都需要 将文本保存到文件中 然后播放该文件 是否有另一种方法可以简化流程 例如使用 gTTS 自动播放 聊天机器人的响应 如果你简单地看一下the docs 您会看
  • 悬停时开始和暂停 SVG 动画

    当用户将鼠标悬停在以下 SVG 上时 我想对齿轮进行动画处理 也就是说 当鼠标进入时 两个齿轮都开始从它们停止的地方旋转 当鼠标离开时 齿轮会停止在它们所在的任何位置 如果可能的话 我希望动画使用缓入 缓出功能开始和结束 如何使用 SVG
  • 使用 sf 在 R 中求多边形的交集

    我想通过查看 400m 步行 5 分钟 内其他点的数量来评估每个点与其他等效点的空间接近程度 我在地图上有一些点 我可以在它们周围画一个简单的 400 m 缓冲区 我想确定哪些缓冲区重叠 然后计算重叠的数量 这个重叠数应该与原始点相关 这样
  • Tensorflow 跨设备通信

    正如tensorflow论文所述 Tensorflow的跨设备通信是通过在设备中添加 接收节点 和 发送节点 来实现的 根据我的理解 设备 请考虑仅涉及CPU设备 负责执行操作的计算 然而 数据 例如 操作产生的张量 变量缓冲区 驻留在内存
  • 无法使用 ServerSocket.socketBind 分配请求的地址

    当我尝试设置套接字服务器时 收到一条错误消息 Exception in thread main java net BindException Cannot assign requested address JVM Bind at java
  • 用户定义函数中的错误处理

    我想在 SQL Server 2005 中编写一个非 CLR 用户定义函数 该函数接受输入字符串并返回输出字符串 如果输入字符串无效 那么我想向调用者指示错误 我的第一个想法是使用 RAISERROR 来引发异常 但是 SQL Server
  • Core Data 中多语言数据的良好实践

    我的 iPhone 应用程序中需要一个多语言 coredata 数据库 我可以为每种语言创建不同的数据库 但我希望在 iphone sdk 中存在一种自动方式来管理不同语言核心数据中的数据 例如资源和字符串 有人有一些提示吗 我做了一些与