2016-04-19 103 views
0

我在我的代码中有一个奇怪的错误。我正在Swift中构建一个iOS应用程序。 代码包含以下功能:从字符串快速startIndex

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。但是,如果我现在运行的代码,并尝试打开其中运行此代码我碰到下面的错误页面:

致命错误:无法从一个空字符串形成文字

如何任何想法解决这个?该字符串似乎不是空的...

谢谢!

回答

4

如果你有一个空字符串,你会看到这个错误。如果你先测试以确保字符串不是空的,你应该没问题。

if !string.isEmpty && string[string.startIndex] == "•" {