使用多个UIViewControllers从属性(CoreData)插入属性

时间:2014-11-16 19:59:57

标签: ios core-data swift data-retrieval

我在查找解决方案时遇到问题如何从保存在一个视图控制器中的属性传递信息 - > 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:属性(名称,年龄,...)都设置为字符串

1 个答案:

答案 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