XCode 8奇怪的游乐场错误,无法查找符号

我试图在Xcode 8的Playground中使用自动布局。但是,一旦我添加了行,我开始接收这个错误:

Playground execution failed: error: Couldn't lookup symbols: __TWPCSo6UIView17PlaygroundSupport22PlaygroundLiveViewableS0_ __swift_FORCE_LOAD_$_swiftCoreGraphics __swift_FORCE_LOAD_$_swiftDarwin __TMaC17PlaygroundSupport14PlaygroundPage __swift_FORCE_LOAD_$_swiftObjectiveC __swift_FORCE_LOAD_$_swiftUIKit _playground_log_hidden _playground_logger_initialize __swift_FORCE_LOAD_$_swiftCoreImage __swift_FORCE_LOAD_$_swiftDispatch __TFC17PlaygroundSupport14PlaygroundPageau7currentS0_ __swift_FORCE_LOAD_$_swiftFoundation __TFC17PlaygroundSupport14PlaygroundPages8liveViewGSqPS_22PlaygroundLiveViewable__ * thread #1: tid = 0x14b6b4, 0x000000010f2f43c0 MyPlayground`executePlayground, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2 * frame #0: 0x000000010f2f43c0 MyPlayground`executePlayground frame #1: 0x000000010f2f39c0 MyPlayground`__37-[XCPAppDelegate enqueueRunLoopBlock]_block_invoke + 32 frame #2: 0x000000010fe0c89c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 frame #3: 0x000000010fdf1944 CoreFoundation`__CFRunLoopDoBlocks + 356 frame #4: 0x000000010fdf10b5 CoreFoundation`__CFRunLoopRun + 901 frame #5: 0x000000010fdf0ad4 CoreFoundation`CFRunLoopRunSpecific + 420 frame #6: 0x000000011518aa61 GraphicsServices`GSEventRunModal + 161 frame #7: 0x0000000110996de4 UIKit`UIApplicationMain + 159 frame #8: 0x000000010f2f36e9 MyPlayground`main + 201 frame #9: 0x00000001132e068d libdyld.dylib`start + 1 

我不知道这是什么意思。 我的意思是,我的解释是Xcode无法find像UIKit这样的库,但是我知道情况并非如此,因为我使用了UIKit,直到自动布局的这一行崩溃了。 源代码非常小,所以我把它包括在内:

 import UIKit import PlaygroundSupport let view = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500)) view.translatesAutoresizingMaskIntoConstraints = false view.backgroundColor = UIColor.white PlaygroundPage.current.liveView = view let field = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) field.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1).isActive = true field.backgroundColor = UIColor.red view.addSubview(field) 

源头底部的第三行似乎是造成这个问题。 这是我搞砸了吗?或者它是一个testing版的bug? 我迷路了

添加field作为视图的子视图,然后设置您的约束。 当视图不在相同的视图层次结构中添加约束时会引发exception。

例如:

 import UIKit import PlaygroundSupport let view = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500)) view.backgroundColor = UIColor.white PlaygroundPage.current.liveView = view let field = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) view.addSubview(field) field.translatesAutoresizingMaskIntoConstraints = false field.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1).isActive = true // add the rest of your constraints field.backgroundColor = UIColor.red 

您通常还需要调用view.layoutIfNeeded()