我正在尝试获取"内容"的字符串但是当我执行应用程序崩溃的代码时...当我尝试使用self.content.text = "\(theText)"
时,它可以工作,但我想编码为UTF8,因为我使用cyrilic,我回来了这些\U0421\U044a\U0434\U044a\U0440\U0436\U0430\U043d\U0438\U0435 \U043d\U0430 \U043f\U0438\U0449\U043e\U0432\U0430
任何可以修复的人问题?
以下是代码:
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let theReq = NSFetchRequest(entityName: "Entity1")
theReq.returnsObjectsAsFaults = false
let myPredicate = NSPredicate(format: "objectId == \"\(contentID)\"")
theReq.predicate = myPredicate
let executed:AnyObject = context.executeFetchRequest(theReq, error: nil) as Array
let theText : AnyObject = executed.valueForKey("content")
self.content.text = theText
答案 0 :(得分:2)
这与编码问题无关。
executeFetchRequest()
返回托管对象的数组。valueForKey()
应用于该数组会返回值的数组。 \Unnnn
转义序列
非ASCII字符。所以解决方案应该很简单:选择获取数组的单个元素:
let executed = context.executeFetchRequest(theReq, error: nil)[0] as NSManagedObject
let theText = executed.valueForKey("content") as String
self.content.text = theText
当然还应检查fetch是成功还是失败,以及是否返回 任何对象。更详细的版本如下所示:
var error : NSError?
let result = context.executeFetchRequest(theReq, error: &error)
if !result {
println("fetch failed: \(error)")
} else if result.count == 0 {
println("nothing found")
} else {
let obj = result[0] as NSManagedObject
let theText = obj.valueForKey("timeStamp") as String
self.content.text = theText
}