Строка, являющаяся пустой, отличается от нулевой. Вам также необходимо проверить, являются ли строки пустыми, или просто безопасно развернуть первый символ имени и фамилии:
func imageFromInitials(firstName: String?,
lastName: String?,
withBlock block: @escaping (_ image: UIImage) -> Void) {
let string: String
let size: Int
if let firstInitial = firstName?.first {
if let lastInitial = lastName?.first {
string = (String(firstInitial) + String(lastInitial)).uppercased()
size = 36
} else {
string = String(firstInitial).uppercased()
size = 72
}
} else {
string = ""
size = 36
}
// the rest of your function
}
Или, если вы хотите сделать это более "Swifty ™" way (и если у вас все в порядке с производством непустого string
для случая, когда only , предоставляется lastName
) , тогда вы можете сделать это:
func imageFromInitials(firstName: String?,
lastName: String?,
withBlock block: @escaping (_ image: UIImage) ->
let string = [firstName, lastName]
.compactMap { $0?.first }
.map { String($0) }
.joined()
.uppercased()
let size = string.count == 1 ? 72 : 36
// the rest of your function
}