objective-c - 如何自动装箱原始文字?

标签 objective-c swift

以前在 Objective-C 中,我可以这样做:

NSInteger count = 100;
NSString *text = [NSString stringWithFormat:@"count: %@", @(count)];

Objective-C 引入了自动装箱原始文字的概念,因此我不必处理 %d%ld 等。它会自动转换将原始文字转换为 NSObject,格式化程序将其解析为 %@

在 swift 中,我们可以做类似的事情吗?

let count: Int = 100
let text = String.init(format: "count of %@", count)

上面的崩溃是因为 count 不是指向对象的指针。

我知道我可以像这样进行内联参数注入(inject):

let text = "count of \(count)"

但由于本地化的目的,需要在更新参数之前对字符串格式进行本地化,而上面的代码无法做到这一点。

最佳答案

使用基础类型和桥接到NSNumber

let count1: NSNumber = 100 // 100
let count2: NSNumber = 0.0 // 0
let count3: NSNumber = 2.73 // 2.73
let text = String(format: "count of %@ %@ %@", count1, count2, count3) // "count of 100 0 2.73"

这确实是“自动装箱”所做的,它将基本类型包装在 Objective-C NSNumber 对象中。

关于objective-c - 如何自动装箱原始文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366579/

相关文章:

ios - (稍微)使用 objective-c 的高级线性代数

ios - Apple 示例项目 PhotoMap 存在内存泄漏

objective-c - xcode 5 : file . h 上的重复错误自构建预编译头 .pcm 以来已被修改

swift - 使用 AlamoFireImage 在 CollectionView 中使用 .af_setImage 方法加载数组的 url 时发生 fatal error

ios - 索引超出范围错误使我的应用程序崩溃

ios - 如何在展开 segue 之前添加 If 语句?

objective-c - ios 4.3 UITableView/UITableViewCell w/自定义背景在删除时不重绘

objective-c - Objective-C 中的时间间隔

ios - 使用 ISAM 身份验证时,MobileFirst ChallengerHandler 未从 submitLoginForm 调用返回

ios - imagePickerController 选择照片时出错