天道酬勤,学无止境

Xcode Playgrounds Shared Directory Not Working

When creating an Xcode Playground, the supported playgroundSharedDataDirectory does not properly show my the expected directory.

Expected: ~/Documents/Shared Playground Data

Actual: file:///var/folders/46/zg_mg07d5h5_9t6q_4vr9_2w0000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-BEF6F13E-994E-45C9-A18E-7DE953069D69/Documents/Shared%20Playground%20Data/

import UIKit
import PlaygroundSupport

print(playgroundSharedDataDirectory)

This also does not link to the directory. If I place a file in the correct directory, I cannot read it. If I place it in the directory, it does work, but it changes every time the playground is loaded.

Xcode 10.3, also appears in Xcode 11. This worked in 10.2

评论

That's the path that iOS playground use. If you make a macOS playground it will have the path ~/Documents/Shared Playground Data

受限制的 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>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在快速的操场上读取文件(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,通过选择视图>导航器>显示项目导航器来显示项目导航器
  • Xcode autocomplete does not work in Sources folder of Swift playgrounds
    I am working on a Swift playground that contains multiple files in the Sources folder alongside the main file. When I type something, for instance, "UI", in the main file, I get the expected autocomplete suggestions. However, when I do the same in files in the Sources folder, I get a "dumb" autocomplete menu as seen in this question: Xcode 9 Autocomplete Not Working 100% - Partially Working I have tried deleting DerivedData as suggested in the above question, and have even gone to the lengths of reinstalling Xcode entirely. However, the problem has not gone away. I have created a new
  • 游乐场导入:没有这样的模块“ 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文件。 在文件中添加一个类。 该代码必须是公开的。 我为我们的示例做了这个
  • Swift游乐场可以查看同一项目中的其他源文件吗?(Can Swift playgrounds see other source files in the same project?)
    问题 我在项目中的一个单独的Swift文件中创建了最简单的自定义类: class Foo { init() { println("I made a foo.") } } 然后,在同一个项目的操场上,我尝试了 var x = Foo() Xcode似乎不喜欢这样,并告诉我'Foo'是一个未解决的标识符。 我对操场如何适应项目其余部分感到困惑,因为我项目中的其他任何Swift文件都可以毫无问题地解决“ Foo”问题。 如何使我的游乐场能够使用在项目中其他Swift文件中定义的自定义类? 我尝试为构建目标命名产品模块,然后将其导入到Playground中,但没有成功:Playground无法识别产品模块的名称。 在此先感谢您的协助。 我知道这很简单。 回答1 他们不可以。 操场是独立的。 希望将来会有所改变。 编辑:从Xcode 6.3开始,Playgrounds现在可以包含支持代码。 他们仍然看不到同一项目中的其他代码,但是可以将代码添加到Playground的支持文件夹中,以便在操场上使用。 有关更多信息,请参见Swift博客。 回答2 有两种方法可以在Playground中使用项目的代码 操场的来源文件夹 是的,在Xcode 6.3 Beta 3中(并且希望在将来): 现在,操场在Xcode中以捆绑形式显示,并带有一个显示三角形,该三角形在单击时会显示“资源”和“源”文件夹。
  • 在快速操场上导入吊舱时“没有这样的模块”(“no such module” when Importing pods in swift playground)
    问题 使用Xcode 7.2.1。 我正在按照本教程进行操作,以使Pod在操场上工作。 我已将游乐场添加到工作区中,并且podfile链接到游乐场。 但是导入仍然不起作用-“没有这样的模块” https://littlebitesofcocoa.com/138-using-cocoapods-in-xcode-playgrounds //导入无效 // Podfile target 'spaceships' do end platform :ios, '9.0' use_frameworks! link_with 'spaceships', 'imports', 'test' https://github.com/mingyeow/ImportToPlaygroundDoesNotWork 回答1 这不是您从本教程中获得的问题的直接答案,但是有一个新工具可以自动生成带有我经常使用的Pod的Playgrounds。 名为ThisCouldBeUsButYouPlaying ,源代码在GitHub上。 基本上,它扩展了CocoaPods安装程序,然后可以生成Playgrounds。 安装: $ gem install cocoapods-playgrounds 使用Alamofire创建游乐场: $ pod playgrounds Alamofire 创建具有多个吊舱的游乐场: $
  • 在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 playgrounds with UIImage
    I am working with Xcode 6, and I'm trying to recreate the code demoed during session 401 "What's new in Xcode 6". I've added an image to Images.xcassets (called Sample) and within the playground file I'm trying to access this image, as demoed. My code is as follows (like the demo): var sample = UIImage(named: "Sample") However, I can't get it to work like the demo. Am I missing something?
  • 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
  • Swift Playground 中没有这样的模块“Cocoa”(No such module 'Cocoa' in Swift Playground)
    问题 我正在尝试遵循 WWDC 游乐场会话中使用的一些代码,我正在尝试使用以下内容导入 Cocoa 框架: import Cocoa 但是我在助理编辑器中收到以下错误 Playground execution failed: error: <REPL>:3:8: error: no such module 'Cocoa' 如果这有帮助的话,我在视频中的 41:20。 回答1 您使用的是 iOS 游乐场(基于 UIKit),而不是 OS X 游乐场(基于 Cocoa)。 尝试创建一个新的 Playground 并选择“OS X”作为类型而不是“iOS”。 之后它应该可以正常工作。 您还可以在 Playground Settings→Platform 下的 File Inspector(View→Inspectors→Show File Inspector)中更改现有 Playground 的类型。 默认情况下,新的 iOS 游乐场是使用样板创建的,包括import UIKit ; OS X Playgrounds 是用样板创建的,包括import Cocoa ,所以如果你发现自己手动输入“ import Cocoa ”,这可能是你输入错误类型的线索。 回答2 如果在正确设置 Playground 的情况下仍遇到此或类似类型的错误,请尝试以下操作: 关闭 XCode 并从终端运行:
  • 如何将第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
  • Swift Playgrounds: Replacement for captureValue(_:withIdentifier:)
    Xcode 7.3 has deprecated XCPlaygroundPage.currentPage.captureValue(_:withIdentifier:). Its predecessor, XCPCaptureValue(), was deprecated in Xcode 7.1. I'm wondering if there is any replacement, apart from implicit capture of collections and in loops? Apart from being more flexible using the explicit approach, the ability to add captions to graphs seems to be gone with the deprecation/removal (although the symbols are found, the aforementioned deprecated methods don't do anything, or at least not what you'd expect).
  • 快速“前提”和“断言”之间的区别?(Difference between “precondition” and “assert” in swift?)
    问题 在Swift中precondition(condition: Bool, message: String)和assert(condition: Bool, message: String)什么区别? 他们俩在我看来都一样。 在哪种情况下,我们应该使用一个而不是另一个? 回答1 assert用于测试期间的健全性检查,而precondition是用于防范可能发生的事情,这将意味着您的程序无法合理进行。 因此,例如,您可以将某个assert放在具有合理结果(例如在一定范围内)内的某个计算中,以快速查找是否有错误。 但是,您不希望附带该功能,因为超出范围的结果可能是有效的,并且不是至关重要的,因此不应使您的应用程序崩溃(假设您只是使用它在进度栏中显示进度)。 另一方面, precondition是在获取元素时检查数组的下标是否有效。 当请求无效的下标时,数组对象没有合理的下一步操作,因为它必须返回非可选值。 来自文档的全文(尝试在Xcode中单击选项并单击assert和precondition ): 前提 检查取得进步的必要条件。 使用此功能可以检测到即使在运输代码中也必须阻止程序继续运行的情况。 在游乐场和-Onone构建中(Xcode的Debug配置的默认设置):如果condition评估为false,则在打印message后以可调试状态停止程序执行。 在-O构建中
  • Xcode快速索引永久(Xcode swift indexing forever)
    问题 我目前正在使用swift和Xcode 6(测试版3)开发iOS应用。 到目前为止一切都还不错,但是现在随着我的项目的发展,Xcode突然开始建立索引,并且一次又一次地索引,使Xcode几乎无法使用。 我在网上搜索了类似的问题,并尝试了解决方案,但没有一个有帮助。 即使禁用索引defaults write com.apple.dt.Xcode IDEIndexDisable 1过程( defaults write com.apple.dt.Xcode IDEIndexDisable 1 )也不会阻止Xcode这样做。 索引时,我的CPU使用率高达300%+,导致风扇以最高速度运行。 在活动监视器中,有几个名为“ swift”的任务,每个任务占用大约1GB的内存。 回答1 杀死名为“ swift”的进程,然后检查xcode中的错误将为您提供一部分代码,从而给您带来麻烦。 需要迅速解决一些错误。 要终止该进程:应用程序>实用程序>活动监视器。 然后找到“快速”过程,双击并选择“退出”或“强制退出”。 回答2 Xcode 7.3发生在我身上 必须清理Xcode缓存以解决它的所有内容。 解决方案: rm -frd ~/Library/Developer/Xcode/DerivedData/* rm -frd ~/Library/Caches/com.apple.dt.Xcode/*
  • 如何从您自己的项目中将自己的类导入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”。 您必须在框架的操场上添加导入语句。 一旦满足所有这些条件
  • 如何在 Xcode 项目设置中使用相对路径?(How do I use a relative path in Xcode project settings?)
    问题 如何在 Xcode 项目设置中使用相对路径? 回答1 假定构建设置中的所有路径都相对于包含 .xcodeproj 文件的目录。 使用标准的 Unix 路径标记 . project directory .. parent directory 因此,如果您的项目文件是 trunk/Mac/proj.xcodeproj,并且您的头文件在 trunk/Headers/foo.h 中,您应该将 ../Headers 添加到您的 Header Search Paths 中。 回答2 还有两个路径:$SRCROOT 和 $SDKROOT。 回答3 在构建/停止按钮旁边的左上角,单击您的项目名称和 Edit Scheme... 在左栏中,单击运行 点击选项 在工作目录旁边打勾:使用自定义工作目录。 然后,您可以将相对路径更改为您想要的任何位置。 编辑:这是针对 Xcode 4.1 回答4 对于Xcode 5 : 单击产品 -> 方案 -> 编辑方案。 然后按照 ulu5 的说明进行操作:单击“运行”,单击“选项”,然后选中“使用自定义工作目录”框。 回答5 当前此处的各种答案建议在通过编辑方案执行项目时设置工作目录,然后选择您想要的任何目录,但似乎缺少问题的关键部分:相对路径。 如果您只是在 UI 中使用文件导航器,您将获得一个绝对路径,其中可能包含您自己的主目录
  • Can Swift playgrounds see other source files in the same project?
    I created the most simple custom class in a separate Swift file in my project: class Foo { init() { println("I made a foo.") } } Then, in a playground within the same project, I tried var x = Foo() Xcode didn't seem to like this, and told me that 'Foo' is an unresolved identifier. I'm somewhat confused about how playgrounds fit into the rest of the project structure, since any other Swift file in my project can resolve 'Foo' without issue. How can I make my playground able to use custom classes I define in other Swift files in my project? I have tried naming the product module for the build
  • 在VCS下是否应忽略Xcode5中的* .xccheckout文件?(Should *.xccheckout files in Xcode5 be ignored under VCS?)
    问题 Apple在Xcode 5中引入了与项目相关的新文件类型:“ xccheckout”。 该文件位于“ .xcodeproj / project.xcworkspace / xcshareddata /”目录中,似乎与项目的版本控制系统有关。 此处是一个示例文件:http://pastebin.com/5EP63iRa 我想这种类型的文件在VCS下应该被忽略,但是我不确定。 因此,这里有一些问题: 应该忽略“ xccheckout”吗? 目的是什么? 回答1 您应该检入Xcode 5 .xccheckout文件; 通常,应提交xcshareddata文件。 .xccheckout文件包含有关工作空间中使用哪些存储库的元数据。 对于单个存储库中的单个项目,并没有太大的区别。 但是,如果您使用的工作区具有来自不同存储库的多个项目,则工作区中存在.xccheckout文件,Xcode可以知道组成工作区的所有组件是什么以及从何处获取它们。 回答2 *.xccheckout文件包含VCS元数据,因此不应将其检入VCS。 另一方面:检入此文件可能不会造成合并困难或其他问题。 如果要忽略此文件(建议这样做),则应将此行添加到项目的.gitignore : *.xccheckout Abizern的解决方案不适用于工作空间内的项目。 因为,当您使用工作空间时, *
  • 如何在操场上使用可可足类?(How to use cocoapods with playground?)
    问题 在使用我的主要项目实施它之前,我正在尝试一些吊舱,我想确保它可以正常工作以满足我的要求。 最简单的方法是在操场上尝试。 我在操场上尝试了pod init ,但无法正常工作 [!]找不到xcode项目,请指定一个 非常感谢您的帮助。 回答1 这是一个古老的问题,但显示在Google的顶部。 这可能是我们但您在玩是一个命令行工具,可使用集成的cocoapod创建一个新的Xcode游乐场。 它还支持一次集成多个椰壳足纲。 这是一个命令。 安装: gem install cocoapods-playgrounds 使用: pod playgrounds Alamofire 等待游乐场打开,然后建造它。 回答2 对于使用CocoaPods的预发行版1.0版本的用户,不建议使用@samuel使用的'link_with'指令。 我尝试仅将我的游乐场添加为Podfile中的目标,但是CocoaPods无法将其识别为有效目标。 我发现为我需要使用的Pod添加一个方案并手动构建它可以按此处讨论的方式工作。 为了演示这一点,我创建了一个示例项目,并将Alamofire集成到此处的Playground中。 我也遇到了这个图书馆。 我还没有机会使用它,但是它看起来很有希望。 此外:如果您想在Playground中发出异步请求(例如,使用Alamofire),则需要启用此处所述的不确定执行。
  • 'git init -b <branch name>' command in terminal is throwing an 'unknown switch' error
    I am trying to add an existing project to GitHub using the command line. I am in the relevant working directory in the terminal and am trying to use the git init -b main command. Initially, I was getting an error relating to xcode: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun I tried xcode-select --install but the software was unavailable from the update server, so I downloaded 'Command Line Tools for Xcode 12' from https://developer.apple.com/download/more/. Now on entering git init -b