如何调试 Swift PlaygroundBook?

2023-11-29

当我探索 Playground Book 示例代码时,例如this one,我发现运行代码非常乏味,因为 Playground Book 对代码运行位置的限制:只能在 iPad 的 Swift Playground 上运行。

无法在 iOS 的 Swift Playground 中调试“源”/辅助代码,因为所有源文件都以不可编辑的纯文本显示。您必须在 Xcode 中打开源文件才能对其进行编辑,但随后您将无法编译或运行它们!

这对于上面的示例代码来说尤其乏味,它使用PlaygroundValue,一个需要 Playground Book 格式的持久性 API,因此我仍然无法通过将所有源代码分离到单独的 Playground 文件中以在 Mac 上运行来运行代码。

由于上面的示例代码已经过时,我发现几乎不可能正确调试它并使代码运行。你必须:

  • 在 iPad 上部署代码。运行这本书。
  • 在 iPad 上看到许多错误消息。
  • 返回 Mac 上的 Xcode 并手动一一调试它们。
  • 再次将代码部署到iPad上运行。重复该过程。
  • 即使解决了所有错误后,您仍然可能面临神秘的“Problem Running Playground”,而没有任何进一步的具体解释。

enter image description here enter image description here

使用 Playground Book 高效调试和部署代码的工作流程是什么?当前工作流程对我来说似乎不切实际,我认为必须有更好的方法,但我对 Playground Book 不够熟悉,而且我的在线研究没有产生任何合理的解决方法。


从我发送给 Apple 的错误报告/建议中,我得到了以下回复:

实际上,我们已经构建了工具来帮助调试辅助源,并且我们在 WWDC 2018 上做了一个演示来演示它。请在此处查看演示文稿并访问工具:https://developer.apple.com/videos/play/wwdc2018/413/

经过进一步研究,我发现他们最近发布了一个游乐场作者模板:

Swift Playgrounds 作者模板是一个入门 Xcode 项目,可帮助您创建、调试和生成 Playground 书籍。使用该模板,您可以像应用程序一样逐步执行实时视图的代码,以便您可以更轻松地识别错误并开发用于开发 Playground 图书的高效工作流程。

该模板需要 Swift 4.1 才能运行,包含三个不同的目标:

  • 游乐场书
  • 书籍来源
  • LiveView测试应用程序

enter image description here

您可以使用LiveViewTestApp使用 Xcode 在 Mac 上完全调试 Playground Book。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调试 Swift PlaygroundBook? 的相关文章

  • iOS 新手。预期的表达错误?

    这看起来很不寻常 因为该方法与我的 showAnswer 方法完全相同 所以我想我应该在这里问 import QuizViewController h interface QuizViewController end implementat
  • 如果您查看内部,nib 文件到底是什么样子的?

    我刚刚学习 nibs 和 swift 并对某些东西感到好奇 我知道 如果您有一个 main storyboard 文件 则首先加载根视图控制器的笔尖 然后加载该视图控制器下可能分层存在的任何视图 但是 我想知道一些事情 当他们说笔尖已 加载
  • 为什么 Visual Studio 项目的命令行设置要按用户存储?可以签入(并共享).user 设置文件吗?

    我们正在创建一个能够理解一些命令行参数的应用程序 我们希望在调试时在命令行上提供一些默认值 这些可以在项目设置中轻松设置正如这里所解释的 https stackoverflow com questions 298708 debugging
  • Apple 推送通知徽章编号

    我开发了服务器端应用程序 以在收到新通知后将徽章编号维护为递增或递减 并在看到通知后删除它工作正常 但是显示徽章时存在一些问题 实际情况是 在设备上收到新通知后 我单击取消按钮 然后徽章编号正确显示 但之后我将打开应用程序并关闭应用程序徽章
  • Xcode 6.3 Parse SDK 1.7.1 PFTableViewCell 错误“具有不兼容的类型”

    My code override func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath object PFObject gt PFT
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 处理核心数据中的重复条目

    我有一个允许用户保存收藏夹的应用程序 我正在使用 Core Data 将收藏夹存储为托管对象 我已经编写了一些代码来防止存储重复项的可能性 但我想知道是否有更好的方法来做到这一点 每个收藏夹对象都有一个唯一的 ID 字段 在下面的代码中 我
  • 使用导航控制器在 Storyboard 中呈现视图控制器 - Swift

    我目前在下面的新故事板中显示了一个 viewController var storyboard UIStoryboard UIStoryboard name AccountStoryboard bundle nil var vc Welco
  • Facebook 登录 Apple CNA

    问题 是否可以设置 Facebook 登录以在 CNA 中使用 是否为开发人员提供 CNA 文档 您可以使用任何开发人员工具调试 CNA 屏幕吗 Details 我创建了一个使用电子邮件提交表单或 Facebook 登录按钮的强制门户登录页
  • 为什么 iOS 5.0 不喜欢纯窗口应用程序?为什么它要求使用视图控制器?

    我有一个使用 Xcode 4 0 的 基于窗口的应用程序 模板创建的 iOS 应用程序 当时运行良好 并且使用的是 iOS 4 3 SDK 这是一个简单地将按钮 标签等直接放置到窗口上的应用程序 没有视图控制器 什么都没有 但现在我已经升级
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 带约束的 Swift 动画

    是否可以通过改变约束来制作 UIView 动画 基本上 我想要动画myv UIView 具有 x y 高度和宽度约束 使用 UIView animateWithDuration 1 5 通过改变旧的限制 是的 这是可能的 你可以这样做 fu
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • ClojureScript 中的 js/console.log

    我想用 ClojureScript 实现一个函数来简化js console log像这样 defn log args apply js console log args 调用它 log foo bar 抛出 TypeError Illega
  • 将 Facebook 图片 URL 上传到 Firebase 存储

    我正在尝试将用户的 Facebook 个人资料图片上传到 Firebase 存储 let dictionary result as NSDictionary let data dictionary objectForKey data let
  • 在应用程序内启用或禁用 Iphone 推送通知

    我有一个 iPhone 应用程序 可以接收推送通知 目前 我可以通过转到 iPhone 设置 通知来禁用我的应用程序的推送通知 但我想在我的应用程序中添加一个开关或按钮来启用或禁用推送通知 这是可以做到的 因为我在 foursquare i
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • 您可以严格泛型类型或为一个参数指定多个类型吗?

    例如我想指定一个类型可能是Integer or String并将其用作特殊类型func我试过typealias但它不会解决这个问题 因为类型别名不能有or参数作为其唯一用途 因此请考虑下面的情况 typealias alis StringP
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐

  • 如何将图像从 Java Applet 发送到 JavaScript?

    我有一个正在生成图像的 Java Applet 最终 我想将图像数据插入数据库 因此我想将图像数据临时存储在包含小程序的页面上的表单字段中 我希望做到这一点而不在客户端计算机上存储图像文件 这一切都来自签名板 以下是一些应该从 sigObj
  • 如何使用 toJSON 更改序列化实体的属性名称?

    我想序列化一个属性 其名称与实体中的名称不同 Entity export class MyEntity This should be serialized with name column in JSON Column name strin
  • 如何更改列的堆叠顺序?

    使用 Bootstrap 3 我有一个非常简单的布局 例如 div class container div class row div class col sm 4 Header Content Left div div class col
  • 如何在CSS中使用边框的clip-path属性

    I have clip part达到 偷工减料 的效果 我想将背景更改为白色并使用绿色边框 问题是 当我将背景更改为白色时 角落是空的 如何在悬停时制作绿色边框角 test background red width 100px height
  • PHP 上次登录脚本[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想知道一种好的 有效的方法来判断我的用户上次登录是多久前的事 在用户个人资料中 我希望
  • php通过socket编程传递c结构体数据

    如何制作一个需要对具有以下结构的linux C套接字服务器执行socket sendto的php套接字客户端 typedef struct UI2 todo char rz LNG RZ 1 char saId LNG SAT ID 1 c
  • 需要复杂数据排序 SQL Server 的帮助

    我需要对数据库中的复杂数据进行排序的帮助 假设我的数据存储在这样的表中 Description JCB Excavator ECU P N 728 35700 Geo Prism 1995 GEO ABS 16213899 GEO pump
  • toLocaleDateString 的相反方法

    为了创建一个尊重浏览器文化的字符串 我们可以这样做 var myDate new Date var myDateString myDate toLocaleDateString myDate returns a string 这很好 因为如
  • JQuery AJAX 从表单发送文件数组

    我在某个地方找到了这段代码 可以在不刷新浏览器的情况下上传图片 然而 我不喜欢上传器文件 所以我决定使用我以前使用过的旧文件 问题在于它正在发送一个数组而不是来自 javascript 文件的字符串 它的目的是发送多个文件而不是仅发送一个文
  • Firefox、SVG、文本装饰

    考虑以下代码片段
  • java中变音符号的问题[重复]

    这个问题在这里已经有答案了 我正在尝试通过控制台读取一些数据并将其写入文件 当控制台中的数据包含元音变音字符时 我遇到问题 它打印出 而不是元音变音字符 请在下面找到我的代码 有人可以帮帮我吗 String cmd cmd C si vie
  • namshi/jose 5.0.2 在 macosx 上需要 lib-openssl

    我查看了其他问题 但找不到解决方案 尝试安装时JWT包我收到标题中提到的错误 我在 mac os x Sierra 上使用 xampp 版本 7 0 8 和 PHP 5 6 我得到的错误如下 Problem 1 namshi jose 5
  • 声明方法时,各种参数前缀的含义是什么?

    声明方法时 参数的各种前缀是什么意思 sh cmd block 什么是 before cmd mean 什么是 before block mean 星号 意味着将所有剩余的参数组合到一个由该参数命名的列表中 与号 意味着如果给方法调用一个块
  • 从 NT 服务向远程桌面会话发送消息

    如何从 nt 服务向在远程桌面会话中启动的应用程序发送 sendmessage 和 postmessage 目前我通过应用程序之间的udp通信暂时解决了这个问题 您不能跨会话边界发送消息 因此 您需要一个 IPC 解决方案 例如 TCP I
  • 从另一个数组中过滤对象数组

    我有两个数组 我想过滤一个包含另一个数组中的对象的数组 let array1 date 1 count 4 date 3 count 6 let array2 1 2 3 4 过滤这两个数组后 我需要过滤后的数组 如下所示 let arra
  • 在 ASP.NET Core 中将 RTSP 流从 IP 摄像机转发到浏览器

    我有一个 Blazor 托管应用程序 我需要根据客户请求从 AXIS 摄像机获取 h264 录制内容 通过 RTSP PLAY 命令 并以浏览器可以重现视频的方式返回它 如果向 AXIS 摄像机查询录音列表 答案包括这个 即我尝试在浏览器上
  • Coldfusion 9.0.1 标准 64 位和 Oracle 11g 64 位 ODBC 连接导致“架构不匹配”

    我有一个新构建的 64 位 Windows Server 2008 R2 机器 上面安装了 64 位 Coldfusion 9 Standard 我已将其升级并修补至最新版本的 CF 我还在盒子上安装了 64 位 Oracle 11g 11
  • 如何在 C++20 中创建模板别名的推导指南?

    假设我有一个类 结构模板及其构造函数的显式推导指南 让这个类有两个模板参数 其中一个可以通过推导指南推导 另一个则不能 template
  • 不带小数的 LinearAxis

    我想避免我的轴中出现小数 我该怎么做 XAML
  • 如何调试 Swift PlaygroundBook?

    当我探索 Playground Book 示例代码时 例如this one 我发现运行代码非常乏味 因为 Playground Book 对代码运行位置的限制 只能在 iPad 的 Swift Playground 上运行 无法在 iOS