天道酬勤,学无止境

Xcode Playground 时间轴为空(Xcode Playground Timeline empty)

问题

我正在尝试在 xcode 7.3.1 版中为操场使用时间线助手编辑器,它始终为空。 时间线助理编辑

我认为错误来自 xcode,但是从搜索来看,似乎没有人遇到相同的错误,所以我很困惑。

回答1

要显示print结果,您需要通过转到菜单打开“调试区域”

查看 > 调试区 > 显示调试区

或点击左下角的按钮:

要显示时间线图,您可以使用XCPCaptureValue

import XCPlayground

var x = 0
for i in 0...10 {
    x += i
    print(x)
    XCPCaptureValue("Value for x", value: x)   
}

XCPCaptureValue已被弃用,将来将不可用(没有可用的替代品)。

另一种方法是通过单击右侧的“+”按钮来内联显示图形:

右键单击图表,您可以选择显示值历史记录:

回答2

我自己刚刚开始使用 Playgrounds,遇到了无法打印到时间轴的相同问题。

这篇 Medium 文章解释了如何在 Xcode 8 和 Swift 3 的时间线中显示或渲染事物。基本上,您必须创建一个视图并将其分配给 PlaygroundPage.current.liveView:

import UIKit
import PlaygroundSupport 

let contentView = UIView(frame: CGRect(x: 0, y: 0, width: 320.0, height: 600.0))
contentView.backgroundColor = UIColor.white

PlaygroundPage.current.liveView = contentView

之后,您可以向 contentView 添加任何内容以显示在时间轴中。 PlaygroundPage.current.liveView 可以接收任何 UIView,例如 UILabel、UITextField 等。

但是,有时创建的视图默认为黑色背景,因此您必须记住将 .backgroundColor 设置为 UIColor.white 以查看它的信息/子视图。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Xcode Playground Timeline empty
    I am trying to use the timeline assistant editor for playground in xcode version 7.3.1, it is always empty. Timeline assistant editor I think the error is from xcode, however from search it doesn't look like anyone got the same error so i am confused.
  • 如何从您自己的项目中将自己的类导入Playground(How to import own classes from your own project into a Playground)
    问题 假设这样的设置: 您有一个Xcode 6项目,在这里您已经用Objective-C和Swift实现了自己的类(例如MyView和MyViewController) 您已经在项目中添加了Playground 在Playground中,可以使用import关键字import类似UIKit模块(框架)。 您如何从Playground启用对项目其他班级的访问? 尝试直接访问项目类会直接导致错误消息:使用未解析的标识符'MyView' 回答1 从Xcode 6.0 Beta 5开始,现在可以将自己的框架导入操场。 这提供了一种在应用程序和Playground之间共享代码的方法,可以同时导入您的框架。 去做这个: 您的游乐场必须与生成框架的项目位于同一工作空间中。 您的工作区必须包含生成框架的目标,而不是使用预先构建的框架。 您必须已经构建了框架。 如果它是iOS框架,则必须为64位运行目标(例如iPhone 5s)构建,并且必须为模拟器构建。 您必须具有一个主动方案,该方案可以构建至少一个目标(该目标的构建位置将在游乐场的框架搜索路径中使用)。 您的“构建位置”首选项(在Xcode的高级“位置”设置中)不应设置为“旧版”。 如果您的框架不是Swift框架,则“ Defines Module”构建设置必须设置为“ Yes”。 您必须在框架的操场上添加导入语句。 一旦满足所有这些条件
  • 如何使用Swift Playground打印到控制台?(How to print to console using swift playground?)
    问题 我一直在遵循Apple Guide的新语言快速指南,但是我不明白为什么右侧的栏只显示“ Hello,Playground”而不是“ Hello,world”。 有人可以解释为什么println没有被打印在右边吗? // Playground - noun: a place where people can play import Cocoa var str = "Hello, playground" println("Hello, world"); 回答1 在Xcode 6.3和更高版本(包括Xcode 7和8)中,控制台输出显示在运动场窗口底部的“调试”区域中(类似于项目中的显示位置)。 要显示它: 菜单:视图>调试区域>显示调试区域(⌘⇧Y) 单击工具栏中工作区布局小部件的中间按钮 单击窗口底部时间线旁边的三角形 任何写入控制台的内容,包括Swift的print语句(在Swift 2 beta中从println重命名)都显示在那里。 在较早的Xcode 6版本中(到目前为止,您可能应该无论如何都应进行升级)显示助手编辑器(例如,通过单击输出区域中某位旁边的小圆圈)。 控制台输出出现在此处。 回答2 您需要启用Show Assistant编辑器: 回答3 只需按Alt + Command + Enter打开助手编辑器。 助手编辑器将打开时间线视图。 默认情况下
  • iOS Playground不显示UI预览(iOS Playground doesn't show UI preview)
    问题 我使用XCode 7.1创建了一个简单的游乐场,并输入了以下简单代码: import UIKit import XCPlayground var str = "Hello, playground" let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 ) let view = UIView() view.backgroundColor = UIColo (colorLiteralRed: 1 , green: 0 , blue: 0 , alpha: 0 ) view.frame = CGRect (x: 0 ,y: 0 ,width: 100 ,height: 100 ) let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 50 , height: 20 )) label.text = str view.addSubview(label) 当Playground运行时,它不显示UIKit对象预览,而仅显示调试信息: 我究竟做错了什么? 回答1 打开预览面板:“视图”>“助手编辑器”>“显示助手编辑器” 然后在您的代码中: import PlaygroundSupport PlaygroundPage.current.liveView = view
  • Swift Playground-文件不可读(Swift Playground - Files are not readable)
    问题 文件在Swift Playground中不可读。 如何使文件可读? 相同的代码在Xcode终端应用程序上运行良好,但在Swift Playground上失败。 下面的演示代码。 import Foundation println("Hello, World!") var fname:String = "/Users/holyfield/Desktop/com.apple.IconComposer.plist" var fm:NSFileManager = NSFileManager.defaultManager() if(fm.fileExistsAtPath(fname)){ println("File Exists") if(fm.isReadableFileAtPath(fname)){ println("File is readable") var fd:NSData? = NSData(contentsOfFile: fname) println(fd?.length) let pl = NSDictionary(contentsOfFile: fname) println(pl?.count) println(pl?.allKeys) }else{ println("File is not readable") } } else{ println("File
  • Xcode:有什么方法可以刷新/重新运行游乐场吗?(Xcode: Any way to refresh/re-run the playground?)
    问题 Xcode中的Playground会在您键入时自动更新,但是我不知道如何让Playground进行“重新编译”。 在许多情况下,这无关紧要,但是,如果您编写的代码会生成或使用随机值,则多次运行它以确保其正常工作会很有用。 有什么方法可以让游乐场重置/刷新/重新运行吗? 看到了几个问题,询问如何阻止Playground自动更新,但反之则无济于事。 最简单的方法似乎是编辑代码(添加和删除空格),或放入某种循环……只是想知道是否有菜单快捷方式等。 回答1 从Xcode菜单尝试“ Editor >“ Execute Playground 顺便说一句,我不知道什么是“ Reset Playground ”。 回答2 除了其他响应之外,还可以使用调试器控制台上方底部栏上的按钮来控制游乐场执行。 控制台左侧有两个按钮。 左侧的一个打开/关闭控制台,右侧的一个控制操场的执行,并根据操场当前是否在运行来进行更改。 如果将鼠标悬停在按钮上,则按钮的底角会出现一个小的黑色三角形。 如果长按该按钮,将显示以下屏幕快照中的菜单,您可以在其中在自动或手动运行之间更改游乐场的执行模式。 如果它是自动的,那么每次进行更改时都应该运行一次(除非您在运行时进行更改,否则它将中断自身并再次运行)。 如果是手动的,则必须按按钮才能运行游乐场。 运行该按钮时,它是一个空心正方形,就像VCR上的停止按钮一样。
  • XCode 6 Playground测量代码性能(XCode 6 Playground Measuring Code Performance)
    问题 是否有任何快速的方法来评估在新的XCode 6 Playground中编写的特定代码部分的性能/运行时间? 我想通过比较某些解决方案的不同编码风格及其对代码性能的影响来开始学习Swift。 回答1 我们强烈建议不要使用运动场来衡量表现,至少不要以时间作为衡量表现的手段。 到目前为止,在操场上花费的大部分时间是记录结果以显示在侧边栏中。 您的代码实际花费的时间贡献不大。 因此,您在操场上的代码的运行时间将主要取决于运行多少行代码/记录结果。 如果要进行性能测量,请查看XCTest框架。 您可以为您的快速代码创建一个测试包。 您可以在操场上衡量的一件事是代码行的运行次数。 因此,例如,如果您正在尝试测量某些代码的算法复杂性,则可以根据它需要运行多少行代码(例如完成某种排序)来执行此操作,或者尝试执行任何操作做。 多次运行的代码行在结果侧边栏中显示运行的次数。 回答2 我构建了这个小工具,可让您在Playground中进行性能测试。 我将继续对其进行更新和增强,但是现在,它将为您提供基本的功能来衡量函数运行所需的时间。 https://github.com/sebastienpeek/swift-performance 回答3 我找到了一个(可能不太优雅)解决方案: var start = TickCount() var implicitInteger = 0 for (var i
  • Swift Playground 中的空类给出 __lldb_expr_ 错误(Empty Class in Swift Playground Gives __lldb_expr_ Error)
    问题 在 Swift Playground 中敲出一个空类会产生错误__lldb_expr_ //: Playground - noun: a place where people can play import UIKit class FooBar { } let foo = FooBar() 见附件截图。 这发生在 Xcode 版本6.3.1 (6D1002) 上。 我也尝试过最新的 Xcode 6.4 beta 3 - Version 6.4 (6E7) - 2015 年 5 月 11 日可用。发生同样的错误。 在正常的Swift项目中,空类的生成没有问题。 只需添加一个虚拟常量,就可以避免该错误,如下所示: //: Playground - noun: a place where people can play import UIKit class FooBar { let wibble = 10 } let foo = FooBar() 鉴于创建初始空类是如此基本的事情,因此对这个错误感到惊讶。 就我而言,我想要一个滚动视图委托类来跟踪内容偏移量。 使用没有属性的委托似乎是完全合理的。 有任何想法吗? 回答1 这不是错误。 这是一个信息,变量foo现在持有一个类FooBar的对象,其内部名称为__lldb_expr_12.FooBar 。 在这种情况下, __lldb
  • 如何在Playground中运行异步回调(How do I run Asynchronous callbacks in Playground)
    问题 许多Cocoa和CocoaTouch方法的完成回调都在Objective-C中实现为块,而在Swift中实现为Closures。 但是,在Playground中尝试这些操作时,永远不会调用完成操作。 例如: // Playground - noun: a place where people can play import Cocoa import XCPlayground let url = NSURL(string: "http://stackoverflow.com") let request = NSURLRequest(URL: url) NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue.currentQueue() { response, maybeData, error in // This block never gets called? if let data = maybeData { let contents = NSString(data:data, encoding:NSUTF8StringEncoding) println(contents) } else { println(error.localizedDescription) } }
  • 在Swift Playground中使用AVPlayer播放视频吗?(Play a video with AVPlayer in Swift Playground?)
    问题 我无法使用AVPlayer在快速的操场上播放视频。 这是我的代码。 import UIKit import AVFoundation var f=CGRectMake(0, 0, 500, 500) var url=NSURL(string: "http://s3.amazonaws.com/vids4project/sample.mp4") var playerItem = AVPlayerItem(URL: url) var v = UIView(frame:f) var player=AVPlayer(playerItem: playerItem) var playerLayer=AVPlayerLayer(player: player) playerLayer.frame=f v.layer.addSublayer(playerLayer) player.play() 有什么建议么? 该代码完全不执行任何操作。 我的期望是'v'变量应该显示视频。 当我将avplayerlayer连接到情节提要中的视图时,它似乎在操场外工作。 回答1 如果将其放在操场上,以下方法应该可以工作。 确保交换路径:(Xcode 11和Swift Playgrounds Mac和iOS) import UIKit import AVFoundation import
  • Empty Class in Swift Playground Gives __lldb_expr_ Error
    Knocking up an empty class within a Swift Playground gives an error __lldb_expr_ //: Playground - noun: a place where people can play import UIKit class FooBar { } let foo = FooBar() See attached screenshot. This occurs on Xcode Version 6.3.1 (6D1002). I have also tried with the latest Xcode 6.4 beta 3 - Version 6.4 (6E7) - available 11th May 2015. The same error occurs. Empty classes build without issue in a normal Swift project. The error can be avoided by simply adding a dummy constant as follows: //: Playground - noun: a place where people can play import UIKit class FooBar { let wibble =
  • 在Swift Playground中使用SceneKit(Using SceneKit in Swift Playground)
    问题 我到处都在寻找这个,但是我还是一片空白。 您如何复制Chris Lattner在WWDC的Playgrounds和SceneKit上演示的内容? 我想在Playgrounds中制作一个SceneKit动画场景。 我尝试从SceneKit项目模板剪切并粘贴设置代码,以为它可以神奇地开始渲染,但事实并非如此。 我尝试观看主题演讲,暂停并放大Lattner的屏幕以查找源代码的提示,但他似乎正在从项目的其他位置导入所有代码,因此没有任何线索。 文档中似乎没有任何内容,或者我丢失了它。 回答1 由于Swift在版本之间不具有源兼容性,因此此答案中的代码可能在Swift的将来版本或早期版本中均不起作用。 目前已更新为可在带有Swift 2.0的Xcode 7.0 Playgrounds中使用。 XCPlayground框架正是您所需要的,并在此处进行了说明。 这是一个非常简单的场景,可让您开始使用Swift中的Scene Kit: import SceneKit import QuartzCore // for the basic animation import XCPlayground // for the live preview import PlaygroundSupport // create a scene view with an empty scene var
  • Swift 2.0 代码在 Xcode 中有效,但在 Playground 中无效(Swift 2.0 code works in Xcode but not in Playground)
    问题 我正在学习 Swift 并且一直在试图找出我无法加载文件的原因而感到沮丧。 事实证明,该代码在 Xcode 中有效,但在 Playground 中不起作用。 这是什么原因? 这是代码: func testFileLoad(){ let myFilePath: String = "/Users/clay/Desktop/test.txt" let t: Bool = NSFileManager.defaultManager().fileExistsAtPath(myFilePath) print(t) let s: String = try! String(contentsOfFile: myFilePath, encoding: NSUTF8StringEncoding) print(s) do { let p: String = try String(contentsOfFile: myFilePath, encoding: NSUTF8StringEncoding) print(p) } catch { print("nope") } } 在 Xcode 的测试模块中运行,它可以正常工作并将我希望的内容打印到控制台。 Test Suite 'Selected tests' started at 2015-08-05 14:24:15.977 Test Suite
  • 游乐场导入:没有这样的模块“ Foo”(Playground Import: No Such Module 'Foo')
    问题 我一直遵循Apple的指示将自定义模块导入操场,包括此处的指示。 但是我得到了: 游乐场执行失败:/var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.swift:7:8:错误:无此类模块'Foo'导入Foo 如何恢复到Playground的正常导入状态? [编辑:注意,有两个答案已经给出了将游乐场与框架相关联的详细说明; 我遵循了这些指示,但是没有运气。 该解决方案将需要重新配置Xcode中的某些内容。 我的安装显然已损坏] 错误和尝试的详细图片: 这是基于@EricD的答案的另一种尝试,显示了目录结构,没有骰子。 回答1 对于上述解决方案均不起作用的那些解决方案(并且Xcode构建路径设置已设置为Unique ),我找到了一个解决方案。 该框架必须使用iOS模拟器设备(列表中的任何设备)而不是Generic iOS Device的方案构建,因为Playgrounds不支持该方案。 这个为我工作: 回答2 这是我使用Xcode 7.1进行OS X的方法: 创建新项目:OS X Cocoa Framework,Swift。 在此示例中,我将其命名为“ TestPlaygroundFMK”。 创建一个新的Swift文件。 在文件中添加一个类。 该代码必须是公开的。 我为我们的示例做了这个
  • 如何将第3方框架导入Xcode Playground?(How to I import 3rd party frameworks into Xcode Playground?)
    问题 如何将第三部分框架导入Xcode Playground? Swift Playground显然具有框架导入机制,因为我们可以导入Cocoa , SpriteKit和OSX Playground中的XCPlayground ( XCPlayground是,iOS中似乎缺少XCPlayground ) 我真正想做的是从操场上隐藏代码并能够显示一个最小的示例。 关于如何将框架加载到Swift游乐场有任何想法吗? 也可以看看: 如何从您自己的项目中将自己的类导入Playground 是否可以将第三方Objective-C代码导入Swift游乐场? (此问题有所不同,因为请求是在Playground中使用框架,而不是简单的常规swift文件) 回答1 编辑:从Beta5开始,当游乐场是将框架构建为目标的工作空间的一部分时,将支持此功能。 Apple开发人员论坛站点上有更多详细信息,但希望@Rick Ballard可以在此处将其添加到他的答案中,这应该成为该问题的明确答案。 不要再执行以下操作! 短期而言,虽然没有受支持的解决方案,但是如果要生成模块/框架,则可以将其复制到SDK的System/Library/Frameworks目录中,然后以与导入系统框架相同的方式import <#Module#> 。 对于OS X游乐场: /Applications/Xcode6-Beta.app
  • Xcode playground gets stuck on 'Running playground' or 'Launching simulator' and won't run the code, what to do?
    Every time I create a new playground in order to test some code, Xcode gets stuck and won't run the code. It simply presents 'Running playground' or 'Launching simulator' statement at the top of the screen with the loading icon promisingly spinning next to it but nothing happens. Sometimes this continues indefinitely and sometimes Xcode halts and prints this to console : Playground execution failed: error: Couldn't lookup symbols: __swift_FORCE_LOAD_$_swiftCoreImage __swift_FORCE_LOAD_$_swiftFoundation _playground_log_hidden _playground_logger_initialize _playground_log_postprint thread #1
  • 如何在快速的操场上读取文件(How can I read a file in a swift playground)
    问题 我正在尝试使用以下内容使用Swift操场读取文本文件 let dirs : String[]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) as? String[] if (dirs != nil) { let directories:String[] = dirs!; let dir = directories[0]; //documents directory let path = dir.stringByAppendingPathComponent(file); //read let content = String.stringWithContentsOfFile(path, encoding: NSUTF8StringEncoding, error: nil) } 但是,这将失败且没有错误。 似乎第一行阻止了Playground在下面输出任何内容 回答1 这对我有用。 我唯一更改的是明确显示文件名(在您的示例中是隐含的)-也许您在“文件”变量的屏幕外定义中有错字? let dirs = NSSearchPathForDirectoriesInDomains
  • 带有UIImage的Swift游乐场(Swift playgrounds with UIImage)
    问题 我正在使用Xcode 6,并且正在尝试重新创建在会话401“ Xcode 6的新功能”中演示的代码。 我已将图像添加到Images.xcassets(称为Sample),并且在运动场文件中尝试按演示方式访问该图像。 我的代码如下(如演示): var sample = UIImage(named: "Sample") 但是,我无法使其像演示一样工作。 我想念什么吗? 回答1 在Finder中打开.playground文件。 在它旁边创建一个名为Resources的文件夹。 将您想要的任何图像添加到此文件夹。 在操场上,按opt-cmd-1打开File Inspector。 您应该会在右边看到游乐场。 如果尚未选择,请按cmd-1打开“项目导航器”,然后单击“游乐场”文件。 在“资源路径”下,选择“相对于游乐场” 单击下面的文件夹图标,然后选择先前创建的资源文件夹。 现在,您应该拥有一个可以与标准NSImage一起使用的捆绑软件(名称:“ filename_without_extension”): 注意:因为Xcode会经常覆盖.playground文件夹,所以我建议使用此方法,这样资源文件夹就不会经常删除和重新创建。 回答2 查看iOS开发者库->游乐场帮助并搜索“资源文件”,您将找到答案 1,打开.playground 2,通过选择视图>导航器>显示项目导航器来显示项目导航器
  • How to I import 3rd party frameworks into Xcode Playground?
    How do I import 3rd part frameworks into Xcode Playground? Swift Playground obviously has a framework import mechanism because we can import Cocoa, SpriteKit, and in an OSX Playground, XCPlayground (XCPlayground seems missing from iOS, oddly) What I'd really like to do is hide code from my playground and be able to show a minimal example. Any thoughts on how to load a Framework into Swift playground? See also: How to import own classes from your own project into a Playground Is it possible to import third-party Objective-C code into a Swift playground? (This question is different because the
  • How to use a custom framework with a playground in Xcode 9
    I am trying to use a custom framework in a playground as described in this Apple documentation: http://help.apple.com/xcode/mac/9.0/#/devc9b33111c However, I am unable to get the playground to recognize the framework (https://github.com/gk-brown/MarkupKit). It is a 64-bit Objective-C framework that defines a module. Here is what I have tried: Create a new "single view" playground As directed in the document, open the playground and choose File > Save As Workspace Close the playground Open the workspace containing the playground Attempt to choose File > Add Files to [Workspace Name] The menu