Mar*_*uro 76 ios swift swift-playground
假设这样的设置:
在Playground中,可以导入UIKit与import关键字一样的模块(框架).如何从Playground启用对项目其他类的访问?
只是尝试直接访问项目类会产生错误消息: 使用未解析的标识符"MyView"
Ric*_*ard 56
从Xcode 6.0 Beta 5开始,现在可以将自己的框架导入游乐场.这提供了一种在应用程序和游乐场之间共享代码的方法,这可以导入您的框架.去做这个:
您的游乐场必须与生成框架的项目位于同一工作区中.您的工作区必须包含生成框架的目标,而不是使用预先构建的框架.
您必须已经构建了框架.如果它是iOS框架,则必须为64位运行目标(例如iPhone 5s)构建,并且必须为模拟器构建.
您必须拥有一个活动方案,该方案至少构建一个目标(该目标的构建位置将用于操场的框架搜索路径).
您的"构建位置"首选项(在Xcode的高级"位置"设置中)不应设置为"旧版".
如果您的框架不是Swift框架,则"定义模块"构建设置必须设置为"是".
您必须在操场上为框架添加import语句.
一旦满足所有这些条件,导入框架将在游乐场中运行.
在Xcode 7中,我们引入了另一种机制,您可以使用它将您自己的类作为源导入,而不是导入框架; 您可以在http://help.apple.com/xcode/mac/8.0/#/devfa5bea3af上阅读有关此"辅助来源"支持的信息.
Mar*_*uro 17
我实际上通过这样做设法引用当前项目中的其他Swift文件:
YourPlayground.playground在终端中打开捆绑包(是的,它是一个bundle =目录).contents.xcplayground例如编辑vi并添加另一个部分,如下所示:Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <playground version='3.0' sdk='iphonesimulator'> <sections> <code source-file-name='section-1.swift'/> <code source-file-name='section-2.swift'/> </sections> <timeline fileName='timeline.xctimeline'/> </playground>
section-1.swift为section-2.swift(如果你从头开始创建Playground section-1.swift,你的软件包中应该有一个例子)section-1.swift,它将指向包外的Swift类文件,如:Run Code Online (Sandbox Code Playgroud)ln ../../Classes/MyView.swift section-1.swift
这样我实际上可以在Playground外面运行代码,但是当这样做时,Xcode似乎更频繁地崩溃.
编辑:
从Xcode 6 beta 5开始,你现在可以参考项目文件了,正如Rick Ballard在他的回答中指出的那样.
nsc*_*hum 12
从Xcode 6的Beta 5开始,如果代码在框架中,则可以导入代码.你需要做的是创建一个框架目标,在那里和操场上添加Swift文件
import ModuleName
Run Code Online (Sandbox Code Playgroud)
您可以在构建设置中查找模块名称.它通常与目标名称相同.
记得制作你想看的代码public.您需要在操场中进行更改之前构建项目.(您还需要编辑操场以触发重新执行.)
不要给操场文件提供与目标相同的名称!如果你这样做,导入似乎工作,但当操场尝试执行时你会得到以下错误:
游乐场执行失败:错误:无法查找符号:
我浪费了一个小时来搞清楚这一点.:)
de *_*aad 10
我无法使用这里的任何答案让它工作,所以我开始玩,并找到了一种简单的方法,可以让我将一个快速的课程导入游乐场.
只需在项目中创建一个游乐场,其中的一个名为"sources"的目录,只需将swift类的副本拖到该文件夹中,然后操场就可以访问它.
例如:
我只是将所有 swift 文件的链接放在Sources文件夹中:
cd /path/to/project/MyPlayground.playground/Sources
ln -s ../../*.swift .
Run Code Online (Sandbox Code Playgroud)
这样,源文件中的更改将立即在 Playground 中生效。工作得很好。
Xcode 8.2、Swift 3.0.1、macOS 塞拉利昂