【发布时间】:2015-10-06 20:08:50
【问题描述】:
所以我有一个名为 Student 的 NSManagedObject。当我在 Student 对象上调用方法时,我的一部分代码有时会中断,例如 student.performTask()。这给了我一个 EXC_BAD_ACESS,这让我相信这是一个线程核心数据问题。但是,在代码中断之前的一行我从对象访问变量并且没有运行时错误。所以我的问题是:调用 NSManagedObject 中的变量与调用方法有什么区别?是什么导致它为一个而中断而不为另一个?
注意:在方法中执行一行之前程序会中断。
这是我的代码的 sn-p:
let attendances = Attendance.createOrUpdateFromJsonDictionary(data!)
var seenIds = [NSNumber]()
for attendance in attendances {
let student = attendance.student
if !seenIds.contains(student.id) { //does not complain when accessing the id
seenIds.append(student.id)
let oldCurrent = student.isCurrent //does not complain or break here
student.setIsCurrent() //<- breaks here
attendance 也是一个有学生关系的 NSManagedObject 并且我正在从出勤中抢走学生这一事实吗?
【问题讨论】:
-
您是否使用
-com.apple.CoreData.ConcurrencyDebug 1标志运行?这将确认或否认线程问题。其次,使用完整的错误文本更新您的问题,因为错误的其余部分可能非常有帮助。是什么让您认为您遇到了线程问题?你在使用多个线程吗?也许是网络代码? -
是的,这是在线程化的 Alamofire GET 请求中调用的。我刚刚添加了标志,但我现在无法复制错误。我喜欢调试!控制台中没有错误文本,只有 exc_bad_access 在它中断的行。
标签: multithreading swift core-data exc-bad-access nsmanagedobject