Sim*_* C. 1 32-bit int64 ios swift
我必须处理一个非常长的Int,它作为一个String来到我身边.呼叫
Int64(String)在64位设备上运行正常,但我看到32位设备崩溃.这是什么原因?
这是代码:
let predicateBarcode = NSPredicate(format: "barcode = %ld", Int64(searchTerm)!)
Run Code Online (Sandbox Code Playgroud)
我不知道有什么关于searchterm,它来自条形码扫描仪,是一个ean-13.我也无法重现崩溃,因为这只发生在我的顾客身上.
这不是问题,Int64.init(_:)而是给出的格式问题NSPredicate.
长度说明符l意味着它的参数必须是long或者unsigned long等同于Int或UInt在Swift中.
如果要将Int64value用作格式参数,则使用正确的长度说明符ll,这意味着long long它与Int64Swift中的相同.
let predicateBarcode = NSPredicate(format: "barcode = %lld", Int64(searchTerm)!)
Run Code Online (Sandbox Code Playgroud)
您可能需要修复其他部分,但我无法看到您隐藏其他部分.(而且就我的测试而言,我无法让我的测试应用程序崩溃.)此外,你是100% - 关于Int64(searchTerm)!可能不会崩溃吗?
无论如何,格式字符串至少需要修复.
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |