为 iPhone 本地化货币

2024-02-08

我希望我的 iPhone 应用程序允许用户使用适当的符号($、€、₤、¥ 等)输入、显示和存储货币金额。

NSNumberFormatter 会做我需要的一切吗?当用户切换其区域设置并且这些金额(美元、日元等)存储为 NSDecimalNumbers 时会发生什么。我认为,为了安全起见,有必要以某种方式捕获输入时的区域设置,然后捕获货币符号,并将它们与 NSDecimalNumber ivar 一起存储在我的实例中,以便在用户更改时可以将它们展开并正确显示自创建项目以来的区域设置?

抱歉,我几乎没有本地化经验,因此希望在开始之前能获得一些快速提示。最后,考虑到 iPhone 键盘的限制,您对如何处理此类输入有什么见解吗?


NSNumberFormatter 绝对是您的最佳选择!您可以在 NSNumberFormatter,格式化程序将自动根据该区域设置进行操作。数字格式化程序的默认区域设置始终是用户选择的区域格式的货币。

NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:@"5.00"];

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSLog(@"%@", [currencyFormatter stringFromNumber:someAmount]);

这将根据用户默认区域格式记录金额“5.00”。如果您想更改货币,您可以设置:

NSLocale *aLocale = [[NSLocale alloc] initWithLocaleIdentifier: "nl-NL"]
[currencyFormatter setLocale:aLocale];

这将选择该区域设置的默认货币。

通常,您不是以用户的本地货币收费,而是以您自己的货币收费。强迫NSNumberFormatter要以您的货币进行格式化,同时保留用户首选项中的数字格式,请使用:

currencyFormatter.currencyCode = @"USD"
currencyFormatter.internationalCurrencySymbol = @"$"
currencyFormatter.currencySymbol = @"$"

在 en-US 中,格式为$5.00在 nl-NL 中是$ 5,00.

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

为 iPhone 本地化货币 的相关文章

  • 在运行时获取 iPhone 应用程序的产品名称?

    如何才能实现这一目标 我想获取名称 以便可以在应用程序中显示它 当然 每次更改名称时不必在代码中更改它 Try this NSBundle bundle NSBundle mainBundle NSDictionary info bundl
  • 仅将 UIImage 移动到另一个 UIImage 内部

    I have an UIImage which is shown in an UIImageView I also have another image in an UIImageView which lays above the firs
  • iCloud loadFrom Contents - 如何处理 UIDocumentStateSavingError 和 UIDocumentStateEditingDisabled

    我在我的应用程序中使用 iCloud 来加载文本文件 加载文本文件时 当我调用时 iCloud 会调用此方法 UIDocument openWithCompletionHandler BOOL success etc BOOL loadFr
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • iPhone 崩溃日志?

    我已经配置了一部 iPhone 并让用户安装了该应用程序 它失败 是否有崩溃日志可以让我看到 iPhone 上失败的原因 Ian 如果您可以使用 xcode 将 iPhone 连接到计算机 则在管理器窗口中它会显示每个应用程序崩溃的崩溃日志
  • 有什么方法可以让我知道按屏幕的力度有多大

    我想找到触摸的压力 我只是不知道如何在不越狱并获取原始触摸数据的情况下实现该结果 有谁知道我会怎么做 你无法获得来自SDK的压力nor未记录的方法 然而你can使用未记录的方法检测触摸的大小 在 GSEvent UIEvent 的较低级别表
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画
  • 这个错误是无效上下文0x0吗?

    我在ViewDidLoad中编写了以下代码 Implement viewDidLoad to do additional setup after loading the view typically from a nib void view
  • PresentModalViewController 不执行任何操作

    我有一个 UIViewController parent 调用presentModalViewController与另一个 UIViewController child on viewDidLoad If parent没有 UINaviga
  • 避免“在此块中强烈捕获自身可能会导致保留周期”消息

    每次我必须在块内使用全局变量或属性时 如下所示 self save if isItSaving NO self saveMyFile 我必须像这样重写 BOOL iis isItSaving id myself self self save
  • Objective C 如何将文本字段添加到导航栏中

    我正在尝试将文本字段添加到导航栏中 但它没有显示在模拟器中 我在 viewdidload 中按如下方式执行 UITextView textField UITextView alloc initWithFrame CGRectMake 0 0
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • iPhone - 如何在矩形中间绘制文本

    有没有一种方法可以在矩形中间绘制文本 我可以找到各种对齐方式 但我尝试过的任何方法都不能将文本垂直居中在矩形中 有没有一种简单的方法可以做到这一点 或者有什么方法可以将矩形居中然后在其中绘制 我直接绘制到 CGContext 尝试使用 NS
  • UINavigationController 在 UITabBarController 的 moreNavigationController 中不起作用

    我正在处理UINavigationControllers在我的应用程序中 全部由UITabBarController 一切工作正常 直到我的控制器落入自动生成的 更多 选项卡 我在简单的示例中重现了该问题 难道我做错了什么 我想不通 感谢您
  • 三星 Galaxy Note II - 逗号作为数字键盘小数分隔符

    我正在尝试使用逗号作为三星 Galaxy Note II 上数字键盘的小数分隔符 我已经在其他设备 Moto X rooted Samsung GS4 上测试了我的应用程序 如果我从设备的系统设置中更改语言 它们的小键盘具有正确的分隔符 三
  • Objective-C 中 typedef 枚举语句在哪里?

    我担心的一个基本问题 以下代码有效 并且 typedef 枚举被识别 但我收到一条警告消息 空声明中无用的存储类说明符 我在这里做错了什么吗 这是放置 typedef 枚举的最佳位置吗 import
  • 在 cocoa touch 中以编程方式将视图位置设置为右上角

    我需要确保一个视图 A 尺寸 200x200 始终与第二个视图 B 全屏尺寸 内的右上角对齐 我想确保无论设备方向如何 视图 A 都保留在该位置 事实是 当使用界面生成器来定位视图时 我对此没有任何问题 但我需要以编程方式构建它 我想我应该
  • 如何获取通讯录图片数据的裁剪框?

    AddressBook 框架提供 ABPersonCopyImageData 用于获取每个地址簿条目的联系人图像 这对于图像数据来说非常有用 但用户也可以出于框架目的调整图像的大小和裁剪图像 当我获取图像数据时 我得到的是完整图像 而不是裁
  • 我在代码和 Interface Builder 之间建立连接时遇到问题

    我在使用 iPhone SDK 时遇到了一个特殊问题 我尝试在我的开发计算机上运行来自不同来源的多个教程 问题似乎总是在于将代码连接到 Interface Builder 中的视图 如果我有一个按钮或数据字段 或其他一些库函数 并且我在vi
  • Facebook iOS SDK:登录 Facebook 时无需总是询问应用程序的权限

    我在我的应用程序中使用 Facebook iOS SDK 我有两个类似的问题 有没有办法知道当前是否有用户登录 我现在使用的是在成功登录时存储访问令牌和到期日期 并在应用程序启动时加载它们 我的问题是 如果会话无效 我可以为用户提供登录选项

随机推荐

  • 如何使用 Windows 搜索搜索 Jar 文件?

    我相信当我们使用 Win2K 时 Windows 搜索会搜索 Jar 文件来查找特定的类 但这在 XP 中似乎不起作用 有谁知道如何在 XP 中启用此功能吗 请注意 要在 Win2K 中进行搜索 我们只需输入 jar 作为文件 并输入 Cl
  • PHP: header("位置...突然停止工作

    我在我的服务器上修改了一个非常简单的 php 页面 它停止工作了 结果我得到一个空白页 其中没有源代码 我修改回以前的网址 但它仍然不起作用 这是怎么回事 Thanks
  • Mongoose 复合索引唯一 + 稀疏

    我想创建一个索引来确保我没有重复的serialNr的组合内 manufacturer art 但有些物品没有serialNr 这些我不想检查 索引 Code mySchema index serialNr 1 art 1 manufactu
  • 多核和java

    我刚刚读到 服务器如何处理多个请求 最终得到了 java 多线程和多核 cpu 在计算机是单核的时候 如果 java 同时有 2 个线程 那么 jvm 调度程序将负责为每个线程分配时间 因此 两个线程永远不会并行运行 而是利用理想时间 例如
  • 如何在单独的线程中创建带有进度条的MFC对话框?

    我的应用程序可能需要一段时间才能连接到数据库 此连接是通过单个库函数调用建立的 即我无法将进度更新放在那里并进行回调或类似的操作 我的想法是在连接到数据库之前在单独的线程中创建一个带有进度条的对话框 该对话框将不断更改进度状态CProgre
  • 从 VIM 插件中检测文件类型?

    我有一个 vim 插件 它定义了一堆键映射 我试图弄清楚如何根据文件类型更改键映射的定义 例如 如果文件是 py 则将键映射到 X 如果文件是 php 则将键映射到 Y Thanks 是的 一种方法是使用 autocmd 调用设置地图的自定
  • 使用 DDD 创建子实体的正确方法

    我对 DDD 世界相当陌生 在阅读了几本有关它的书籍 其中包括 Evans DDD 后 我无法在互联网上找到我的问题的答案 使用 DDD 创建子实体的正确方法是什么 你看 互联网上的许多信息都在某种简单的层面上运作 但细节是魔鬼 为了简单起
  • iOS地理围栏中区域可以设置的最大和最小半径是多少

    我当时正在 iOS 中进行地理围栏工作 我实际上想在地图上设置不同的区域 每个区域的半径不同 我实际上想知道 iOS 地理围栏中区域的最小和最大半径 Thanks 在 iOS 中 没有指定最小半径 苹果表示 具体的阈值距离由硬件和当前可用的
  • laravel dusk TeaDown() 必须与 Illuminate\Foundation\Testing\TestCase::tearDown() 兼容

    public function tearDown this gt browse function Browser browser browser gt click navbarDropdown gt click dropdown item
  • 这些嵌套向量是如何连接的?

    我编写了一段代码 它创建了一个向量 记分板 其中包含 3 个大小为 3 的独立向量 所有向量都包含符号 在所有索引 0 2 处 当我现在执行 向量集 时在记分牌的第一个向量上 要将其第一个元素更改为 X 向量 2 和 3 也会更改 这是如何
  • 防止在 Javascript 中自动创建全局变量

    我刚刚花了一些时间调试一个问题 归根结底是忘记使用var关键字位于新变量标识符前面 因此 Javascript 会自动在全局范围内创建该变量 有什么方法可以防止这种情况发生 或者更改默认行为 而不使用像 JSLint 这样的验证器 在编写和
  • 如何仅在第一次启动时显示视图?

    我使用 Xcode 4 5 和故事板构建了一个应用程序 第一次启动应用程序时 我希望初始视图控制器出现 并附带必须接受才能继续的条款和条件 之后 我希望应用程序启动并跳过第一个视图控制器并转到第二个视图控制器 我知道我必须使用 NSUser
  • Android 4.3 BTLE作为服务器:如何启动广告?

    我正在尝试使用 4 3 中的新 BTLE API 在 Nexus 7 上实现 BTLE 服务器 我遇到了几个问题 首先 SDK 中没有示例 唯一的例子是针对客户的 其次 文档实际上告诉你做错误的事情 它指出 人们必须使用BluetoothA
  • 如何检测 MemoryMappedFile 是否正在使用

    在 C 4 0 中 MemoryMappedFile有几种工厂方法 CreateFromFile CreateNew CreateOrOpen or OpenExisting 我需要打开MemoryMappedFile如果存在 则从文件创建
  • Gitlab docker 和 external_url

    你好 我使用 docker 安装了最新的 gitlab 我使用 p 10080 80 和 10022 22 启动容器 我可以浏览 gitlab 并执行我需要的操作 我什至可以分别使用端口 10080 和 10022 git 克隆 http
  • 如何在android webview中启用默认突出显示菜单?

    如何在 android webview 中启用默认文本突出显示菜单 例如 复制 粘贴 搜索 共享 在 Android 1 5 2 3 上工作 您可以使用emulateShiftHeld 自 2 2 起公开 但现在已弃用 此方法将您的 Web
  • 使用 'hd' 参数限制 Google OAuth 访问一个域 (Django / python-social-auth)

    我正在构建一个内部网络应用程序供我的公司使用 并希望使用我们的 Google Apps 域来管理来自我们公司域用户名的访问 本问题的其余部分为 example com 我在用着 Django 1 9 5 python social auth
  • 如何在日期字段上显示日期选择器日历

    这是关于如何使用 jQuerydate picker在 django 支持的站点中 models py is from django db import models class holidaytime models Model holid
  • 对数组使用限制?

    有没有办法告诉 C99 编译器我访问给定数组的唯一方法是使用 myarray index 说这样的话 int heavy calcualtions float restrict range1 float restrict range2 fl
  • 为 iPhone 本地化货币

    我希望我的 iPhone 应用程序允许用户使用适当的符号 等 输入 显示和存储货币金额 NSNumberFormatter 会做我需要的一切吗 当用户切换其区域设置并且这些金额 美元 日元等 存储为 NSDecimalNumbers 时会发