警告:不推荐使用'characters':请直接使用String或Substring

Kru*_*nal 157 string substring ios swift4 xcode9.1

字符 - String的实例属性,不推荐使用Xcode 9.1

通过使用characters属性从String获取子字符串非常有用,但现在它已被弃用,Xcode建议使用它substring.我试图检查SO问题和苹果开发人员教程/指南.但是没有看到任何解决方案/替代建议.

这是警告信息:

不推荐使用'characters':请使用String或Substring

在此输入图像描述

我使用属性执行/处理了很多字符串操作characters.

任何人对此更新有任何想法/信息?

小智 261

Swift 4引入了对字符串API的更改.
你可以用!stringValue.isEmpty而不是stringValue.characters.count > 0

有关更多信息,请从此处获取样本

例如

let edit = "Summary"
edit.count   // 7
Run Code Online (Sandbox Code Playgroud)

  • 永远不要使用count> 0来检查集合是否为空.Collection上有一个名为isEmpty的属性.从文档**当您需要检查集合是否为空时,请使用isEmpty属性而不是检查count属性是否等于零.对于不符合RandomAccessCollection的集合,访问count属性会遍历集合的元素.** (32认同)

Moh*_*goo 76

Swift 4 vs Swift 3示例:

let myString = "test"

for char in myString.characters {print(char) } // Swift 3
for char in myString { print(char) } // Swift 4

let length = myString.characters.count // Swift 3
let length = myString.count // Swift 4
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。问题是替换string.characters.count,而不是替换为零。仅在屏幕截图中提及。 (2认同)

tym*_*mac 9

操作字符串的最常见情况之一是使用JSON响应.在这个例子中,我在我的监视应用程序中创建了一个扩展,用于删除比特币JSON对象的最后(n)个字符.

斯威夫特3:

func dropLast(_ n: Int = 0) -> String {
    return String(characters.dropLast(n))
Run Code Online (Sandbox Code Playgroud)

Xcode 9.1错误消息:

不推荐使用'characters':请直接使用String或Substring

Xcode是告诉我们要使用的字符串变量或方法直接.

斯威夫特4:

func dropLast(_ n: Int = 0) -> String {
    return String(dropLast(n))
    }
Run Code Online (Sandbox Code Playgroud)

完整扩展:

extension String {
    func dropLast(_ n: Int = 0) -> String {
        return String(dropLast(n))
    }

    var dropLast: String {
        return dropLast()
    }
}
Run Code Online (Sandbox Code Playgroud)

呼叫:

print("rate:\(response.USDRate)")
let literalMarketPrice = response.USDRate.dropLast(2)
print("literal market price: \(literalMarketPrice)")
Run Code Online (Sandbox Code Playgroud)

安慰:

//rate:7,101.0888 //JSON float
//literal market price: 7,101.08 // JSON string literal
Run Code Online (Sandbox Code Playgroud)

其他例子:

  • print("Spell has \(invisibleSpellName.count) characters.")
  • return String(dropLast(n))
  • return String(removeLast(n))

文档:

你会经常使用常用的方法,例如dropLast()removeLast()count因此这里是每种方法的明确的苹果文档.

droplast()

removelast()

计算字符