我试图以大写字母显示联系人姓名的第一个字母:
var firstLetter: String? = !(contact?.firstName == "") ? (contact?.firstName as? String)?.substring(to: 1).uppercased() : (contact?.lastName as? String)?.substring(to: 1).uppercased()
但我有这个错误:
String may not be indexed with 'Int', it has variable size elements
答案 0 :(得分:0)
尝试此功能以获得大写格式的第一个字母。在通话之前检查您的字符串是否为空,然后不要像在代码中那样进行调用
func capitalizeFirst() -> String {
let firstIndex = self.index(startIndex, offsetBy: 1)
return self.substring(to: firstIndex).capitalized + self.substring(from: firstIndex).lowercased()
}
答案 1 :(得分:0)
如果您只需要找到第一个字符,则可以使用contact?.uppercased().characters.first
。
通常,要使用大写字母获取第n个字符,请使用contact?.uppercased()[contact?.index(contact?.startIndex, offsetBy: n)]
答案 2 :(得分:0)
试试这个:
if let contact = contact
{
var firstLetter = !contact.firstName.isEmpty ? contact?.firstName.characters.first?.description.uppercased() : contact?.lastName.characters.first?.description.uppercased()
}
如果您告诉"联系"的类型/定义,我将能够为您提供更多帮助。
答案 3 :(得分:0)
为了避免长链的间接性并使函数更清晰,你也可以这样写:
firstLetter = ( (contact?.firstName ?? "") + (contact?.lastName ?? "") )
.characters.first?.description.uppercased()
答案 4 :(得分:0)
var firstLetter = (contact?.firstName.characters.first ?? contact?.lastName.characters.first)?.description.uppercased()