我正在使用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
我该怎么做才能做到这一点?
提前谢谢。
答案 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对象显示无限行