Swift:CoreData库中的断点 [英] Swift: Breakpoint in CoreData library

查看:154
本文介绍了Swift:CoreData库中的断点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

XCode 6 Beta 3使用Swift。

XCode 6 Beta 3 using Swift.

在我的应用程序中,我使用CoreData。当我在模拟器中运行我的应用程序时,XCode弹出调试器的断点设置在CoreData库中的某个地方(见截图)。这发生在几个CoreData函数上,例如当插入新记录或从实体获取记录时。断点位置始终相同。

In my App I use CoreData. When I run my App in simulator, XCode pops up the debugger with a breakpoint set somewhere in the CoreData library (see screenshot). This happens on several CoreData functions, for example when inserting new records or fetching records from an entity. The breakpoint position is always the same.

这是非常讨厌。当我的应用程序从一个实体获取10条记录时,我必须按下继续执行程序按钮10次。

This is extremely annoying. When my App fetches 10 records from an entity I have to push the continue program execution button 10 times.

因为这个断点设置在某处机器代码,断点检查器不显示任何断点,所以我不能删除它。

Because this breakpoint is set somewhere in machine code, the breakpoint inspector does not show any breakpoints so I cannot delete it.

有人知道如何摆脱它吗?

Does anyone know how to get rid of it?

非常感谢。

编辑
backtrace -output:

backtrace-output:


(lldb)bt
* thread#1:tid = 0x1d68b0,0x000000010a2f7fcd libswift_stdlib_core.dylib swift_dynamicCastClassUnconditional + 77,queue ='com.apple.main-thread',stop reason = EXC_BREAKPOINT(code = EXC_I386_BPT,subcode = 0x0)
* frame#0:0x000000010a2f7fcd libswift_stdlib_core.dylib
swift_dynamicCastClassUnconditional + 77
frame#1:0x000000010a0fbb85 GPS Track GPS_Track.TrackListTableViewController.tableView(tableView =< unavailable>)(Swift.ImplicitlyUnwrappedOptional< ObjectiveC.UITableView> ;, cellForRowAtIndexPath:Swift.ImplicitlyUnwrappedOptional< ObjectiveC.NSIndexPath>) - > Swift.Optional< ObjectiveC.UITableViewCell> + 1125 at TrackListTableViewController.swift:53
frame#2:0x000000010a0fc937 GPS Track
@objc GPS_Track.TrackListTableViewController.tableView(GPS_Track.TrackListTableViewController)(Swift.ImplicitlyUnwrappedOptional,cellForRowAtIndexPath:Swift.ImplicitlyUnwrappedOptional) > Swift.Optional + 87在TrackListTableViewController.swift:0
frame#3:0x000000010bc2f218 UIKit - [UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 508
frame#4:0x000000010bc0f340 UIKit
- [UITableView _updateVisibleCellsNow:isRecursive:] + 2845
frame#5:0x000000010bc24fea UIKit - [UITableView layoutSubviews] + 213
frame#6:0x000000010bbb1ebd UIKit
- [UIView(CALayerDelegate)layoutSublayersOfLayer:] + 519
frame#7:0x000000010b9c9598 QuartzCore - [CALayer layoutSublayers] + 150
frame#8:0x000000010b9be1be QuartzCore
CA :: Layer :: layout_if_needed(CA :: Transaction *)+ 380
frame#9:0x000000010b9be02e QuartzCore CA :: Layer :: layout_and_display_if_needed :Transaction *)+ 24
frame#10:0x000000010b92cf16 QuartzCore
CA :: Context :: commit_transaction(CA :: Transaction *)+ 242
frame#11:0x000000010b92e022 QuartzCore CA :: Transaction :: commit()+ 390
frame#12:0x000000010b92e68d QuartzCore
CA :: Transaction :: observer_callback(__ CFRunLoopObserver *,unsigned long,void *) + 89
frame#13:0x000000010ab52927 CoreFoundation __ CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
frame#14:0x000000010ab52880 CoreFoundation
__ CFRunLoopDoObservers + 368
frame#15:0x000000010ab480d3 CoreFoundation __ CFRunLoopRun + 1123
frame#16:0x000000010ab47a06 CoreFoundation
CFRunLoopRunSpecific + 470
frame#17:0x000000010e9e9abf GraphicsServices GSEventRunModal + 161
frame#18:0x000000010bb39cf8 UIKit
UIApplicationMain + 1282
frame#19:0x000000010a0e6a5d GPS Track top_level_code + 77 at AppDelegate.swift:36
frame #20:0x000000010a0e6a9a GPS Track
main + 42在AppDelegate.swift:0
frame#21:0x000000010d2e7145 libdyld.dylib`start + 1
(lldb)

(lldb) bt * thread #1: tid = 0x1d68b0, 0x000000010a2f7fcd libswift_stdlib_core.dylibswift_dynamicCastClassUnconditional + 77, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) * frame #0: 0x000000010a2f7fcd libswift_stdlib_core.dylibswift_dynamicCastClassUnconditional + 77 frame #1: 0x000000010a0fbb85 GPS TrackGPS_Track.TrackListTableViewController.tableView (tableView=<unavailable>)(Swift.ImplicitlyUnwrappedOptional<ObjectiveC.UITableView>, cellForRowAtIndexPath : Swift.ImplicitlyUnwrappedOptional<ObjectiveC.NSIndexPath>) -> Swift.Optional<ObjectiveC.UITableViewCell> + 1125 at TrackListTableViewController.swift:53 frame #2: 0x000000010a0fc937 GPS Track@objc GPS_Track.TrackListTableViewController.tableView (GPS_Track.TrackListTableViewController)(Swift.ImplicitlyUnwrappedOptional, cellForRowAtIndexPath : Swift.ImplicitlyUnwrappedOptional) -> Swift.Optional + 87 at TrackListTableViewController.swift:0 frame #3: 0x000000010bc2f218 UIKit-[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 508 frame #4: 0x000000010bc0f340 UIKit-[UITableView _updateVisibleCellsNow:isRecursive:] + 2845 frame #5: 0x000000010bc24fea UIKit-[UITableView layoutSubviews] + 213 frame #6: 0x000000010bbb1ebd UIKit-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 519 frame #7: 0x000000010b9c9598 QuartzCore-[CALayer layoutSublayers] + 150 frame #8: 0x000000010b9be1be QuartzCoreCA::Layer::layout_if_needed(CA::Transaction*) + 380 frame #9: 0x000000010b9be02e QuartzCoreCA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24 frame #10: 0x000000010b92cf16 QuartzCoreCA::Context::commit_transaction(CA::Transaction*) + 242 frame #11: 0x000000010b92e022 QuartzCoreCA::Transaction::commit() + 390 frame #12: 0x000000010b92e68d QuartzCoreCA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 89 frame #13: 0x000000010ab52927 CoreFoundation__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 frame #14: 0x000000010ab52880 CoreFoundation__CFRunLoopDoObservers + 368 frame #15: 0x000000010ab480d3 CoreFoundation__CFRunLoopRun + 1123 frame #16: 0x000000010ab47a06 CoreFoundationCFRunLoopRunSpecific + 470 frame #17: 0x000000010e9e9abf GraphicsServicesGSEventRunModal + 161 frame #18: 0x000000010bb39cf8 UIKitUIApplicationMain + 1282 frame #19: 0x000000010a0e6a5d GPS Tracktop_level_code + 77 at AppDelegate.swift:36 frame #20: 0x000000010a0e6a9a GPS Trackmain + 42 at AppDelegate.swift:0 frame #21: 0x000000010d2e7145 libdyld.dylib`start + 1 (lldb)


推荐答案

我进一步跟踪:问题只出现在为实体使用自定义对象类。示例:

I tracked it down further: The problem only occurs when using custom object classes for the entities. Example:

// User class, defined in User.swift
class User: NSManagedObject {
    @NSManaged var name: String
    @NSManaged var firstname: String
}


// --------------
// code somewhere else
let users = moc.executeFetchRequest(fetchRequest, error: &error)

for object in users {
    let user = object as User   // <-- breakpoint fired here
        println(user.name)
    }
}






解决方案:


SOLUTION:

需要创建自定义对象类对象Objective C使用@objc指令可见:

One need to make the custom object class visible to Objective C using the @objc directive:

// User class, defined in User.swift
@objc(User)    // <-- required!
class User: NSManagedObject {
    @NSManaged var name: String
    @NSManaged var firstname: String
}

感谢您的帮助!

这篇关于Swift:CoreData库中的断点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆