XCode 8 奇怪的操场错误,无法查找符号 [英] XCode 8 strange Playground error, Couldn't Lookup Symbols

查看:28
本文介绍了XCode 8 奇怪的操场错误,无法查找符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在 Xcode 8 的 Playground 中使用自动布局.但是,一旦我添加了该行,我就开始收到此错误:

I was trying to use auto layout in a Playground on Xcode 8. However, as soon as I added the line, I started receiving this error:

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 并且很好,直到那条自动布局使派对崩溃.源代码真的很小,所以我把它完整地包括在内:

I have no idea what this means. I mean, my interpretation is that Xcode can't find libraries like UIKit, but I know that is not the case, as I used UIKit and such fine until that line of auto layout crashed the party. The source code is really small, so I am including it in its entirety:

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)

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

The third line from the bottom of the source seems to be causing the problem. Is this something that I messed up or is it a beta bug? I'm lost here.

推荐答案

添加 field 作为 view 的子视图,然后设置约束.为不在同一视图层次结构中的视图添加约束时会引发异常.

Add field as a sub view of view then set your constraints. There is an exception that is raised when constraints are added for views not in the same view hierarchy.

例如:

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

这篇关于XCode 8 奇怪的操场错误,无法查找符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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