ios - XCode 8 奇怪的 Playground 错误,无法查找符号

标签 ios swift xcode uikit swift-playground

我试图在 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 无法找到像 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)

源代码底部的第三行似乎是导致问题的原因。这是我搞砸了还是测试版错误?我在这里迷路了。

最佳答案

field 添加为 view 的 subview ,然后设置约束。为不在同一 View 层次结构中的 View 添加约束时会引发异常。

例如:

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()

关于ios - XCode 8 奇怪的 Playground 错误,无法查找符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237298/

相关文章:

ios - 使用 "required init?(coder aDecoder: NSCoder)"进行 IBOutlets 初始化时会遇到任何问题吗?如果是,有什么例子?

ios - SKNode帧不正确?

ios - Swift 3/如何重用扩展

xcode - OSX-将自定义控件放在自定义图形上

c++ - Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)

ios - 将 Web 应用程序获取到应用程序商店

objective-c - NSURLErrorDomain 代码=-1000 "bad URL": What does it really mean?

ios - 如何使用 Swift 4 在 ARKit 中旋转虚拟对象

ios - 有没有办法在 iOS 中使用 Call Directory Extension 阻止 No Caller ID?

ios - 在 Vine Sign Up 等 View Controller 之间创建流畅的 Gif Segue