Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法访问NSManagedObject子类';s属性(提供EXC\u BAD\u访问权限)_Ios_Swift_Core Data - Fatal编程技术网

Ios 无法访问NSManagedObject子类';s属性(提供EXC\u BAD\u访问权限)

Ios 无法访问NSManagedObject子类';s属性(提供EXC\u BAD\u访问权限),ios,swift,core-data,Ios,Swift,Core Data,我是Swift的核心数据专家。我有一个单独的NSManagedObject类,看起来像这样: import Foundation import CoreData class Polls: NSManagedObject { @NSManaged var title: String @NSManaged var pollDescription: String } func refreshPolls() { //do the query to populate the array

我是Swift的核心数据专家。我有一个单独的
NSManagedObject
类,看起来像这样:

import Foundation
import CoreData

class Polls: NSManagedObject {

@NSManaged var title: String
@NSManaged var pollDescription: String

}
func refreshPolls()
{
    //do the query to populate the array
    let req = NSFetchRequest(entityName: "Polls")
    self.polls = self.managedObjectContext?.executeFetchRequest(req, error: nil) as! [Polls]
    println(polls.count)
}
在UITableViewController子类中,我有一个获取这些对象的方法,如下所示:

import Foundation
import CoreData

class Polls: NSManagedObject {

@NSManaged var title: String
@NSManaged var pollDescription: String

}
func refreshPolls()
{
    //do the query to populate the array
    let req = NSFetchRequest(entityName: "Polls")
    self.polls = self.managedObjectContext?.executeFetchRequest(req, error: nil) as! [Polls]
    println(polls.count)
}
请注意,
self.polls
被定义为“polls”对象的数组

现在,在
cellforrowatinexpath:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell:UITableViewCell
    if indexPath.row==0
    {
        cell = tableView.dequeueReusableCellWithIdentifier("EditPollCell") as! UITableViewCell
    }
    else
    {

        let poll:Polls = self.polls[indexPath.row-1] as Polls
        //println(poll.title) //fails with EXC_BAD_ACCESS

        cell  = tableView.dequeueReusableCellWithIdentifier("PollCell") as! UITableViewCell
        //cell.textLabel?.text = (poll.valueForKey("title") as! String)


    }

    return cell
已注释的
println
会因
EXC\u BAD\u访问失败
。没有给出额外的错误信息,将“dynamic”添加到
Polls
类的属性中没有区别


为什么我不能访问
轮询
对象的属性?使用
valueForKey
方法失败,并显示消息“在展开可选项时意外发现一个nil值”,即使
title
属性有一个值。

我假设您的
轮询
数组是
NSManagedObject
数组。 要检查此问题,请尝试更换:

//println(poll.title) //fails with EXC_BAD_ACCESS

如果这有帮助,您可以检查此答案


如您链接的问题的第一个答案所示,我将我的实体重命名为单数(Poll而不是Polls),问题消失了。我不知道为什么。你能对此提供一些见解吗?我的类中没有,也没有@objc()注释。为什么更改名称可以解决问题?@tutiplain您是否也将类名从
当前产品模块。Polls
更改为simple
Poll
?我现在在另一个视图控制器上遇到了相同的问题。类名为PollMaster.Poll。PollMaster是应用程序名。这一点没有改变。我现在遇到问题的第二个视图控制器显示EXC_BAD_指令,访问相同的属性。嗯,你能分享代码如何在第二个视图控制器中获取
Poll
对象吗?嗨,仔细调试我的代码后,我发现第二个视图控制器的问题与我发送的值为零有关,与发送核心数据对象的事实无关。我终于能够像这样发送到另一个视图控制器:`var PollDet:PollDetailsViewController=self.storyboard?.instanceeviewcontrollerwhiteIdentifier(“PollDetailsViewController”)as!PollDetailsViewController PollDet.setPoll(self.polls[indexath.row-1])self.navigationController?.pushViewController(PollDet,动画:true)`