首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对于iPhone 8,Swift - NumberFormatter Number from字符串返回nil,但适用于其他设备

在使用 Swift 的 NumberFormatter 类将字符串转换为数字时,如果在 iPhone 8 上返回 nil,而在其他设备上正常工作,可能是由于以下几个原因导致的:

基础概念

NumberFormatter 是 Swift 中用于格式化和解析数字的类。它可以将数字转换为本地化的字符串表示,也可以将本地化的字符串解析为数字。

可能的原因及解决方法

  1. 区域设置(Locale)问题
    • 原因:不同设备的默认区域设置可能不同,某些区域设置可能不支持特定的数字格式。
    • 解决方法:显式设置 NumberFormatter 的区域设置为 en_US 或其他已知支持的区域设置。
    • 解决方法:显式设置 NumberFormatter 的区域设置为 en_US 或其他已知支持的区域设置。
  • 字符串格式问题
    • 原因:输入的字符串可能包含非数字字符或格式不正确。
    • 解决方法:确保字符串只包含有效的数字字符,并且格式正确。
    • 解决方法:确保字符串只包含有效的数字字符,并且格式正确。
  • 设备特定问题
    • 原因:某些设备可能存在特定的软件或硬件问题,导致 NumberFormatter 行为不一致。
    • 解决方法:尝试在其他 iPhone 8 设备上测试,确认是否是设备特定问题。如果是,可能需要更新操作系统或联系 Apple 支持。
  • Swift 版本问题
    • 原因:不同版本的 Swift 可能在 NumberFormatter 的实现上存在细微差异。
    • 解决方法:确保所有设备上使用相同版本的 Swift 和 Xcode。

示例代码

以下是一个完整的示例代码,展示了如何使用 NumberFormatter 并处理可能的错误:

代码语言:txt
复制
import Foundation

func parseNumber(from string: String) -> NSNumber? {
    let formatter = NumberFormatter()
    formatter.locale = Locale(identifier: "en_US")
    
    if let number = formatter.number(from: string) {
        return number
    } else {
        print("Failed to parse number from string: \(string)")
        return nil
    }
}

if let number = parseNumber(from: "123.45") {
    print("Parsed number: \(number)")
} else {
    print("Parsing failed")
}

应用场景

  • 金融应用:需要精确处理货币和数字格式。
  • 数据分析:从用户输入或外部数据源解析数字。
  • 国际化应用:需要支持多种语言和区域设置的数字格式。

通过上述方法和示例代码,你应该能够解决在 iPhone 8 上使用 NumberFormatter 时遇到的问题。如果问题仍然存在,建议进一步检查设备的操作系统版本和 Swift 版本,或者联系 Apple 支持获取帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WWDC 2021新Formatter API:新老比较及如何自定义

WWDC 2021新Formatter API:新老比较及如何自定义 在WWDC 2021的What's in Foundation专题中,苹果隆重介绍了适用于Swift的新Formatter API...新API比旧API好吗 好和坏都是相对的,对于以Swift开发为主或者只会Swift的程序员(比如我本人),新Formatter不仅学习和使用起来更容易,同时也更适合日益流行的声明式编程风格。...Double else {return nil} return String(value) } // 将格式化类型(字符串)转换回被格式化类型 override func...因此,尽管Formatter会针对不同区域提供不同语言的返回结果,但为了兼容性,返回结果仍为String。 FormatStyle协议同时约定了必须满足Codable和Hashable。...任何长度为6或8的十六进制字符串都将被转换成UIColor。

1.4K30

对iOS应用中的文本进行本地化

对于这种使用了字符串插值的LocalizedString,我们需要使用字符串格式说明符,苹果的官方文档[5]为我们提供了详细的对照用法说明。...此时通过查看Drink.swift我们可以找出原因:对于已经明确了的String类型,Text是不会将其视作LocalizedStringKey的。...特定设备规则 nsstringdevicespecificruletype-pic@3x 目前支持的设备类型有:appletv、apple watch、ipad、iphone、ipod、mac 使用者不需要在代码中进行介入...,系统将根据使用者的硬件设备返回对应的内容 实战5:重新设定付款按钮 使用复数规则完善付款按钮。...: "Other") tableName同样适用于.stringdict 指定其他Bundle中的字符串文件 如果你的app中使用了包含多语言资源的其他Bundle时,可以指定使用其他Bundle中的字符串文件

2.2K20
  • Swift 周报 第十三期

    本次发布会,iphone14pro 刘海依旧,但刘海减少 30% 变更为“药丸”,并引入灵动岛设计,通过刘海变换多种交互UI。视网膜 XDR2000 尼特峰值,实现息屏显示。...9月8日凌晨,苹果秋季发布会推出 iPhone14 系列产品,其中最大亮点为 iPhone14pro 系列新增正面设计“灵动岛”。正面摄像头有一个较小的切口,在不同状态下挖孔形态不同,支持第三方应用。...更新适用于:iPhone 5s、iPhone 6、iPhone 6 Plus、iPad Air、iPad mini 2、iPad mini 3 和 iPod touch(第 6 代) 影响:恶意制作的...天气应用程序的整体设计没有重大更新,但苹果提供了更多信息。...“iPad 天气”,随着 iOS 16/ iPadOS 16 更新,终于有了适用于 iPad 的天气应用,相比 iPhone 版本可以更好地适应 iPad 的大显示屏。

    1.7K20

    ios开发之xcode环境介绍

    作为一个刚入门ios开发的人来说,对于ios开发,对于xcode一切都是那么的陌生,那么我们如何开始我们的第一步呢?...Device 我们选择只针对 iPhone 的,另外还有选项是 iPad 和 Universal(iPhone 和 iPad 都兼容)。...大家的这个界面可能比截图里的大,这里分别点击 1 2,然后在 3 所在的下拉框里选择 iPhone 4.7-inch,这个部分主要是改变设计期间的外观的,不影响实际运行的结果,最终的大小取决于你所运行的设备屏幕大小...接下来我们分别解释一下 1 的部分是从输入框中取出用户输入的内容,返回结果为 String 类型 2 是 Swift 里一种独特的用法,在 if 中直接声明变量,Int(resultText) 复杂将...注意特殊语法 (result) ,Swift 在字符串中可以插入任何变量或者表达式,只要把他们放在 (),程序就会对他们自动求值,然后转换成对应的字符串进行替换。

    2.6K61

    Swift 周报 第三十六期

    8 月 25 日消息,根据国外科技媒体 9to5Mac 报道,苹果今年将调整 iPhone 15 Pro 和 iPhone 15 Pro Max 两款机型的颜色选项,取消金色,新增灰色。...而 iPhone 15 Pro 系列用的是 USB 3.2,传输速度能达到 20 Gbps,比标准版快 20 倍以上。 对于消费者来说,这将是多年来 iPhone 系列手机最大的改进之一。...配备该端口后,iPhone 用户在旅行时不再需要为手机和其他移动设备携带两根不同的充电线,不过想法是好的,但苹果却不会这么干。...例如,当前如果类型是 ExpressibleByStringLiteral 但只有某些字符串文字有效,则唯一的选择是在运行时遇到无效字符串文字时捕获。这违背了文字的编译时性质,而文字应该允许检查文字。...它也不适用于非可发送类型,除非我们强制该值在访问它时保持隔离。

    23520

    Swift 周报 第十八期

    目前,世界杯正在进行中,有关足球的消息总能吸引外界,但苹果收购曼联这事确实让人摸不着头脑。 供应链确认 iPhone15 全系 C 口 供应链传出苹果下一代 iPhone 15 最新规格。...从语义上讲,LosslessStringConvertible 意味着它可以表示为字符串(例如整数),而 RawRepresentable 意味着它在底层是一个字符串(例如原始类型为 String 的枚举...://forums.swift.org/t/dangling-pointer-from-array/61609 [6]如何从 ReducerProtocol 中创建的alert回调中触发操作: https...://forums.swift.org/t/how-to-trigger-action-from-alert-callback-created-in-reducerprotocol/61598 [7]键路径与闭包的代码大小差异.../61589 [11]状态初始化器中的 UUID: https://forums.swift.org/t/uuid-in-state-initializer/61593 [12]对于金融计算用 Decimal

    2K20

    苹果仍在研发更大尺寸的 iMac | Swift 周报 issue 60

    上述苹果公告意味着,苹果将开始允许第三方使用 iPhone 的支付芯片来处理交易,等于允许银行和其他服务方与 Apple Pay 平台竞争。...相关承诺将具法律约束力,为期 10 年,适用于整个欧洲经济区。2022 年,欧盟委员会指控苹果公司限制第三方移动支付应用开发者使用 NFC,这使苹果支付在和其他同类产品竞争中获得不公平的优势。...为了解决这个问题,作者必须使用捕获列表 [ _headerCell ],但这一点并不直观,特别是对于初学者来说。...相对而言,Swift Testing 中的 confirmation() API 不会等待,它要求 Confirmation 在闭包返回之前得到确认。...在实际应用中,start() 函数创建了一个无结构的Task,但没有等待其值,这意味着当 start() 返回时,任务中的异步操作可能尚未完成。

    14911

    Swift 周报 第三十五期

    不久前的 6 月份,苹果公司刚成为首家市值超过 3 万亿美元的企业,但其最新一季的财报却引发了投资者对其手机与其他设备需求不振的担忧。 8 月 4 日,苹果公司公布了三季度财报。...公司股价接连下跌 苹果公司三季报发布日恰在其新产品 iPhone15 系列新机上市前,但市场预期苹果手机这一新机型受追捧程度不如以往。...我们建议添加新的 String 可失败 Initializers,用于验证编码输入,并在输入包含任何无效元素时返回 nil。...提议Swift 分布式追踪[5] 动机 虽然 Logging[6] 和 Metrics[7] 可以用于仪器化应用程序的特定部分,但 Distributed Tracing[8] 提供了对整个分布式系统的整体视图...我仔细分析了开源实现,试图揭示出现 nil 可选值的源头,但我看不到任何问题,我认为这与当前发布的代码不同。 对于我哪里的逻辑出了问题,有什么建议吗?

    23430

    万字长文|Swift语法全面解析|附示例

    Swift 通过采用现代编程模式来避免大量常见编程错误: 变量始终在使用前初始化。 检查数组索引超出范围的错误。 检查整数是否溢出。 可选值确保明确处理 nil 值。 内存被自动管理。...是 UInt8 类型 类型安全和类型推断 Swift 是一门类型安全的语言,这意味着 Swift 可以让你清楚地知道值的类型。...可以在已有字符串中插入常量、变量、字面量和表达式从而形成更长的字符串。 Swift 提供了三种方式来比较文本值:字符串字符相等、前缀相等和后缀相等。...Glad you could visit from Cupertino.” // 可选元组返回类型 func minMax(array: [Int]) -> (min: Int, max: Int)?...+ output number /= 10 } while number > 0 return output } // strings 常量被推断为字符串类型数组,即 [

    3.7K22

    【IOS开发基础系列】UIAlertController专题

    UIAlertAction由标题字符串、样式以及当用户选中该动作时运行的代码块组成。...和对话框不同,上拉菜单的展示形式和设备大小有关。在iPhone上(紧缩宽度),上拉菜单从屏幕底部升起。在iPad上(常规宽度),上拉菜单以弹出框的形式展现。         ...接下来我们就可以在iPhone或者其他紧缩宽度的设备上展示了,不出我们所料,运行得很成功。     ...当我们使用iPad或其他常规宽度的设备时,就会得到一个运行时异常: Terminating app due to uncaught exception ‘NSGenericException’, reason...在iOS 8中我们不再需要小心翼翼地计算出弹出框的大小,UIAlertController将会根据设备大小自适应弹出框的大小。并且在iPhone或者紧缩宽度的设备中它将会返回nil值。

    60630

    学习PHP中国际化地数字格式处理

    学习PHP中国际化地数字格式处理 不知道大家有没有了解过,对于数字格式来说,西方国家会以三位为一个进位,使用逗号来分隔。比如,12345678,用标准的格式来表示的话就是 12,345,678 。...格式化规则设置 虽说已经有这么多的规则格式供我们使用了,但大家的业务总是千奇百怪的,我们能不能定义自己的格式规则呢?既然这么写了,那当然是可以的啦。...var_dump($fmt->getPattern()); // string(8) "#,##0.##" $fmt->setPattern("#0.# kg"); var_dump($fmt->getPattern...另外一个方法是 parseCurrency() 方法,从名字就可以看出,它是将货币格式转回数字,并且,很重要的一点是,它的第二个引用参数,可以将货币符号的通用编码也返回回来,比如测试代码中返回的 CNY...另外,这一套 NumberFormatter 对象也是提供了面向过程的函数式使用方法的,比如 numfmt_create() ,记住是 numfmt_ 开头的函数哦,不要和 number_format(

    1.1K20

    iPhone 15 系列跌破 5000 元大关 | Swift 周报 issue 46

    业务以外的其他所有硬件业务均出现了同比下滑。...该授权适用于在美国店面的 iOS 或 iPadOS App Store 上提供 App 内购买项目的 App,获得授权的开发者可在 App 内包含自己网站的链接,以告知用户还有其他购买数字商品或服务的方式...Swift论坛1) 提议字符串插值的默认值内容概括该提案建议向 Swift 添加一项新功能,以解决涉及可选值的字符串插值的挑战。...但这段代码看起来不错,我假设 bc 消耗可以简单地取消初始化完成处理程序。 我正在尝试做的事情是否可能或可能已计划但尚未实施?回答由于提前退出和仿制药等问题,它变得很棘手。...当调用者可能拥有对值的唯一剩余引用时,使用消费是一种优化,允许调用者存储参数或将其用作聚合返回值的一部分而不复制它,或者只是提前结束其生命周期 。

    14832

    苹果印尼投资承诺再提升 10 倍 | Swift 周报 issue 67

    古尔曼透露,为了 iPhone SE 的推出,苹果一直在发给员工的设备中秘密测试 Sinope 性能,还与全球多地的运营商合作伙伴一起进行质量保证测试。...无论如何,苹果首款 modem 将具有其他几项优势:可与苹果的主处理器紧密集成减少功耗,更高效地扫描蜂窝服务,更好地支持与卫星网络的连接。另还能够相对于 SAR(比吸收率)限制提供更好的性能。...建议将你的解决方案上传至 GitHub,方便学习其他人的技巧与 Swift 使用方式。期待大家的参与!...闭包可以对状态进行分割,操作完成后,部分状态返回给 Mutex,成为新的保护状态,其余部分通过返回值传递给调用者。关键点:inout sending: 表示状态在闭包内可以被临时转移到其他隔离区域。...sending 返回值: 保证返回值可以安全地传递到其他隔离域。

    31900

    Swift:map(), flatMap() 和 compactMap() 的区别

    它适用于任何数据类型,因此我们可以使用它来大写字符串数组: let wizards = ["Harry", "Hermione", "Ron"] let uppercased = wizards.map...如果不存在,它将返回nil,因此此方法将返回一个可选字符串。 我们可以使用map()读取发送回的值,并对其进行转换: let name: String?...(如果name不包含字符串为nil,map()将直接返回nil给greeting。)所以返回值类型是String?...最后一个转换返回了可选的整数,因此我们还研究了compactMap()将如何执行相同的转换,但随后解包可选参数并丢弃所有nil值。...可选的可选参数使用起来非常混乱,但这就是flatMap()出现的地方:它不仅执行转换(其名称的“map”部分),但随后将返回的内容展平,因此“可选的可选参数”变为“可选的”。

    3.6K31
    领券