我在查找解决方案时遇到问题如何从保存在一个视图控制器中的属性传递信息 - > NSManagedObject
放入位于另一个UIViewController
的标签中。问题在于它说它不能将它转换为String ....我认为这将是一个简单的GET功能,但到目前为止还找不到任何东西
修改:注意 - 我正在UIViewControllerACCOUNT
进行保存并希望调用UIViewControllerSETTINGS
![左UIVcont =保存。对UIViewCont =电话 - >格式标签]:http://i.imgur.com/IsQcXVb.png
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
//1
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
//2
let fetchRequest = NSFetchRequest(entityName:"Account")
//3
var error: NSError?
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]?
if fetchedResults != nil {
//在这里我希望代码将CoreData中的数据插入到标签中。例如,来自实体帐户的数据具有属性" name"进入NameLabel ...如果我做了类似
的事情让account = fetchRequest.valueForKey(" name")as String --->结束投掷错误***由于未捕获的异常终止应用程序' NSUnknownKeyException',原因:' [valueForUndefinedKey:]:此类不符合密钥值的密钥值编码。&#39 ; NameLabel.text = account
} else {
println("Could not fetch \(error), \(error!.userInfo)")
}
}
如何从CoreData传递信息 - Entity.attribute - > Label.text?
编辑:当我尝试设置时,它会显示[NSObject: AnyObject] is not convertible to 'String'
编辑2:属性(名称,年龄,...)都设置为字符串
答案 0 :(得分:0)
fetchedResults
返回的executeFetchRequest
是一个数组(即使有一个 - 或者没有 - 与获取请求匹配的对象)。因此,您首先需要从数组中提取单个NSManagedObjects。假设您想要第一个项目(索引0),您可以使用:
if let resultsArray = fetchedResults {
if resultsArray.count > 0 {
let myAccount = resultsArray[0] as NSManagedObject
nameLabel.text = myAccount.valueForKey("name") as String?
// Likewise for the other labels
} else {
println("No results from fetch request.")
}
}
如果您的Account
实体是NSManagedObject
的子类,那么您可以将第3行中的NSManagedObject
替换为Account
。