Ios 无法访问NSManagedObject子类';s属性(提供EXC\u BAD\u访问权限)
我是Swift的核心数据专家。我有一个单独的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
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
更改为simplePoll
?我现在在另一个视图控制器上遇到了相同的问题。类名为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)`