换行符(\ n)不能在swift中工作

时间:2016-01-28 05:47:10

标签: ios string swift

我正在使用swift开发我的第一个iOS应用程序。我需要在UILabel中用Newline(\ n)显示一些细节。当我直接分配时,它的工作正常如下

myLabel.text = "\nSome \n\n Text here\n"

由于我需要存储文本,因此我将其存储为核心数据并检索为String。

let context: NSManagedObjectContext = appDel.managedObjectContext


    let fetchRequest = NSFetchRequest()

    let entityDescription = NSEntityDescription.entityForName("Details", inManagedObjectContext: context)

    fetchRequest.entity = entityDescription

    do {
        let result = try context.executeFetchRequest(fetchRequest)
        print(result.count)
        if (result.count > 0) {
            for i in 0..<result.count
            {
                let person = result[i] as! NSManagedObject

                fee = person.valueForKey("fee") as! String
                content = person.valueForKey("content") as! String
                pattern = person.valueForKey("pattern") as! String
                documentation = person.valueForKey("documentation") as! String

            }
        }

    } catch {
        let fetchError = error as NSError
        print(fetchError)
    }

但是当我将费用设为标签文字时,Newline无效。

myLabel.text = fee

我该怎么做才能做到这一点?
提前谢谢。

1 个答案:

答案 0 :(得分:10)

使用coredata或sqlite在本地数据库中保存带\n的文本时。 它还会自动设置另一个反斜杠。 因此,当你获取字符串并尝试打印它时,只显示你保存它的方式。 只需使用此行在标签中显示多行文字。

Swift 2.0

    let fee = person.valueForKey("fee") as? String
    let newText = fee?.stringByReplacingOccurrencesOfString("\\n", withString: "\n")
    myLabel.text = newText

Swift 3.0

    guard let fee = person.valueForKey("fee") as? String else {return}
    let newText = fee.replacingOccurrences(of: "\\n", with: "\n")
    myLabel.text = newText
  

不要忘记通过设置行数= 0来允许UILabel对象显示无限行