XCode Playground Overview
http://rshankar.com/xcode-6-and-playground/
Playground is an interactive work environment that allows you to see the values in the sidebar for the written code. As and when you make changes to your code the sidebar reflects the changed result. Listed below are some examples written using Swift language in Playground
Sum of n numbers
|
1
2
3
4
5
6
|
var sum = 0for i in 0...10 { sum += i}sum |
Fibonacci Series
|
1
2
3
4
5
|
var fibonacci = 0var temp1 = 1var temp2 = 0println(fibonacci) |
|
1
2
3
4
5
6
|
for j in 0...10 { temp2 = fibonacci fibonacci += temp1 temp1 = temp2 println(fibonacci)} |
In the below screenshot, you can observe that the sidebar displaying the values for the variables.


Similarly the console output displays the message written using println statements And by clicking the Value History option, the timeline feature is displayed for that expression. Console Output, Timeline can be accessed using the Assistant Editor.

Pin the Result
Playground allows to pin the result to the editor window using the Show result option. The playground also allows users the take look at the values using the Quick Look option as shown in the below screenshot. Quick Look can display colours, Strings (plain and attributed), Images, Views, Arrays and Dictionaries, Points, rects, sizes, Bezier Paths, URLs/WebView, Classes and Structs.

Adding images to playground
We can add images to playground by following the below mentioned steps
Step 1: Click View menu and select Show File Inspector and Utilities

Step 2: Under File Inspector, click Full Path option to access location of the playground file.

Step 3: Right click on the file and select Show Package Contents

Step 4: Create a folder with name as Resources

Step 5: Copy the required image file under Resources folder. For this demo, I have copied a file named as funny_image of type PNG.
Go to your Playground file and add the following line of code to access the file.
|
1
2
3
|
// Add image to playground.let image = UIImage(named: "funny_image”) |
Quick look option should now display the image as shown below.

Playground Utilities
- XCPShowView – Show live views in timeline.
- XCPSetExecutionShouldContinueIndefinitely. – Allows execution to continue even after reaching playground’s top level code.
- XCPCaptureValue – Manually capture values.
- XCPSharedDataDirectoryPath – Retrieves the directory path which contains the shared data between all playgrounds
In order use the above mentioned playground utilities, we need to import XCPlayground module. Let us see couple of examples for this module.
XCPSHOWVIEW
Add the following code to Playground, which creates a UIView with background colour as Red. And by using XCPShowView, we will add this view to the playground timeline.
|
1
2
3
4
5
6
7
|
// Add image to playground.let image = UIImage(named: "funny_image")import XCPlaygroundlet demoView = UIView(frame: CGRectMake(0, 0, 250, 250))demoView.backgroundColor = UIColor.redColor()XCPShowView("MyView", demoView) |
XCPShowView accepts two parameters, an identifier for the View and the actual View itself.

XCPSETEXECUTIONSHOULDCONTINUEINDEFINITELY
Let us see an example of Asynchronous call by calling a web service that returns your IP details.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// Making Asynchronous call in PlaygroundXCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true)NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in if error == nil { var error:NSError? if let result = data { if let dict = NSJSONSerialization.JSONObjectWithData(result, options: NSJSONReadingOptions.AllowFragments, error: &error) as? NSDictionary { println(dict) } else { println("Error Processing data") } } } else { println(error.localizedDescription) }}).resume() |
You need to make sure the execution is continued until you receive the information from callback method. This is done by adding XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true). The service result will be printed to your console as shown below.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
{"area_code" = 0;asn = AS24560;"continent_code" = AS;country = India;"country_code" = IN;"country_code3" = IND;"dma_code" = 0;ip = "182.65.61.59";isp = "Bharti Airtel Ltd., Telemedia Services";latitude = 20;longitude = 77;offset = 5;timezone = "Asia/Kolkata";} |
Playground Limitations
- Playground cannot be used for performance testing.
- Does not support User Interaction.
- Does not support On-device execution.
- Cannot use your app or framework code.
- Does not support custom entitlements.
XCode Playground Overview的更多相关文章
- Xcode playground markdown常用语法
//: **Bold** *Italic* /*: # h1 ## h2 ### h3 #### h4 h5 h6 same as h3 --- --- --- * blank seperate li ...
- How to make an HTTP request in Swift
from: http://stackoverflow.com/questions/24016142/how-to-make-an-http-request-in-swift You can use N ...
- Functor and Monad in Swift
I have been trying to teach myself Functional Programming since late 2013. Many of the concepts are ...
- Xcode在playground的quick look框中显示对象自定义视图
对于一般对象,playground中默认的quick look显示已经够用,比如简单的字符串,Int,或简单的自定义Class等等. 不过对于有些情况,我们需要自定义对象在playground中的显示 ...
- Xcode的playground中对于SpriteKit物理对象的更新为何无效
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了便于SpriteKit中物理行为的调试,我们可以借助于Xc ...
- Xcode打开playground运行很慢或者无法输出的解决办法
学习Swift最快捷的方法就是创建playground,但有时后运行很慢或者一直显示Running,无法输出. 解决办法 关闭Xcode 在终端里执行2段代码 rm -rf ~/Library/Dev ...
- Xcode 打开playground文件的时候提示-Unable to find execution service for selected run destination
解决办法: step 1: 关闭Xcode (快捷键cmd + q) step 2:在terminal里面运行如下语句 rm -rf ~/Library/Developer/CoreSimulator ...
- 对Xcode菜单选项的详细探索(干货)
本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到了xcode7,但是一般都只是用了一些基础的功能,说来也惭愧.在一次偶然的机遇突然发现了“显示调用层级”的选 ...
- 【转】对 Xcode 菜单选项的详细探索(干货)
http://www.cocoachina.com/ios/20151204/14480.html 本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到了xco ...
随机推荐
- CodeBlocks 3 使用设置
使用MingW作为CB的默认编译器和wxWidgets进行编程,当然需要好好配置一番,因为mingw在windows下用起来着实没有win32原生态程序运行快,也没有他小,好处是借助wxwidgets ...
- KMP板子+Trie板子
KMP算法是一个字符串匹配算法,最直白的用法就是在一个长度为n的字符串T中查找另一个长度为m字符串P的匹配(总之就是用于文本中进行单个字符串的匹配). 对于这个问题,暴力算法是很好做的,直接对于T的每 ...
- (转载)Linux进程间通信
(在学习linux进程通信,看到一篇很好的文章,转载过来,原文地址是http://www.cnblogs.com/linshui91/archive/2010/09/29/1838770.html) ...
- ByteArrayInputStream/ByteArrayOutputStream 学习
ByteArrayInputStream: byte[] buff = new byte[1024]; ByteArrayInputStream bAIM = new ByteArrayInputSt ...
- Remix-Solidity IDE上run选项下Environment选择Web3 Provider,出现不能连接到测试网Ganache提示
解决办法:通常情况下,自己使用的浏览器IDE是:https://ethereum.github.io/browser-solidity,如果出现连接不到Ganache测试网的提示,可以使用另一种浏览器 ...
- vue里的this
vue中methods对象里的函数, this指向的都是当前实例或者组件.
- BZOJ4592 SHOI2015脑洞治疗仪(线段树)
考虑需要资瓷哪些操作:区间赋值为0:统计区间1的个数:将区间前k个0变为1:询问区间最长全0子串.于是线段树维护区间1的个数.0的个数.最长前缀后缀全0子串即可.稍微困难的是用一个log实现将区间前k ...
- gdb调试命令的使用及总结
gdb调试命令的使用及总结 gdb是一个在UNIX环境下的命令行调试工具.如果需要使用gdb调试程序,请在gcc时加上-g选项.下面的命令部分是简化版,比如使用l代替list等等. 1.基本命令 命令 ...
- [CF632A]Grandma Laura and Apples
题目大意:有$n$个顾客买苹果,每个买一半的苹果,有时会送半个苹果.最后卖光了,问卖了多少钱 题解:倒退过来,可以把半个苹果当做一份来算,这样不会有小数 卡点:无 C++ Code: #include ...
- BZOJ4012 [HNOI2015]开店 【动态点分治 + splay】
题目链接 BZOJ4012 题解 Mychael并没有A掉,而是T掉了 讲讲主要思路 在点分树上每个点开两棵\(splay\), 平衡树\(A\)维护子树中各年龄到根的距离 平衡树\(B\)维护子树中 ...