我的代码中有一个奇怪的错误。我在Swift中构建了一个iOS应用程序。 该代码包含以下函数:
func generateAttrString(path: String?) {
do {
let content = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
let array = content.componentsSeparatedByString("\n¶")
let attrStyle = NSMutableParagraphStyle()
attrStyle.lineSpacing = 8
attrStyle.paragraphSpacing = 12
for element in array {
var string = element
var attributes = [
NSParagraphStyleAttributeName: attrStyle,
NSFontAttributeName: UIFont(name: "MyriadPro-Light", size: 17.0)!
]
var attrString = NSMutableAttributedString(string: string, attributes: attributes)
if string[string.startIndex] == "•" {
string.removeAtIndex(string.startIndex)
attributes[NSFontAttributeName] = UIFont(name: "MyriadPro-Regular", size: 17.0)!
let newAttrStyle = attrStyle.mutableCopy() as! NSMutableParagraphStyle
newAttrStyle.paragraphSpacing = 3
newAttrStyle.lineSpacing = 0
attributes[NSParagraphStyleAttributeName] = newAttrStyle
attrString = NSMutableAttributedString(string: string, attributes: attributes)
}
contentArray.append((false, attrString))
}
} catch _ {
}
}
在特定部分:
if string[string.startIndex] == "•" {
它给了我一个错误,我之前尝试添加一个断点,并尝试打印" string",这使我返回了字符串。之后我尝试了字符串[string.startIndex] =="•",它返回true。但是现在如果我运行代码并尝试打开运行此代码的页面,我会收到以下错误:
致命错误:无法从空字符串中形成字符
关于如何解决这个问题的任何想法?字符串似乎不是空的......
谢谢!
答案 0 :(得分:4)
如果您有一个空字符串,您将看到该错误。如果你先测试以确保字符串不是空的,你应该没问题。
if !string.isEmpty && string[string.startIndex] == "•" {