警告:“字符”已弃用:请直接使用string或子string
字符 – String的实例属性,从Xcode 9.1(beta)
它是/是一个非常有用的属性,从string获取子string,但不赞成和Xcodebuild议使用substring 。 我试图检查一下SO问题和苹果开发者教程/指导原则。 但没有看到任何解决scheme/替代build议。 
这里是警告消息:
'字符'已弃用:请使用string或子string
  
 
 我有很多string操作是使用属性characters执行/处理的。 
任何人有关于此更新的任何想法/信息?
  Swift 4引入了对stringAPI的更改。 
 你可以使用stringValue.count > 0而不是stringValue.characters.count > 0 
欲了解更多信息,请从这里获取样品
例如
 let edit = "Summary" edit.count // 7 
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 
这个警告只是冰山一angular,有一个string变化的赃物,string又是一个字符的集合,但我们得到了新的和冷静,subStrings 🙂
这是一个很好的阅读这个: https : //useyourloaf.com/blog/updating-strings-for-swift-4/
JSON响应是处理string的最常见情况之一。 在这个例子中,我在我的手表应用程序中创build了一个扩展,以删除比特币JSON对象的最后(n)个字符。
Swift 3:
 func dropLast(_ n: Int = 0) -> String { return String(characters.dropLast(n)) 
Xcode 9.1错误信息:
'字符'已弃用:请直接使用string或子string
Xcode告诉我们直接使用stringvariables或方法。
Swift 4:
 func dropLast(_ n: Int = 0) -> String { return String(dropLast(n)) } 
完整的扩展:
 extension String { func dropLast(_ n: Int = 0) -> String { return String(dropLast(n)) } var dropLast: String { return dropLast() } } 
呼叫:
 print("rate:\(response.USDRate)") let literalMarketPrice = response.USDRate.dropLast(2) print("literal market price: \(literalMarketPrice)") 
安慰:
 //rate:7,101.0888 //JSON float //literal market price: 7,101.08 // JSON string literal 
其他示例:
-  print("Spell has \(invisibleSpellName.count) characters.")
-  return String(dropLast(n))
-  return String(removeLast(n))
文档:
 您经常会使用常用方法,如dropLast()或removeLast()或count因此这里是每个方法的显式Apple文档。 
droplast()
removelast()
计数字符