标签: swift-playground

在swift,iOS游乐场中读取文件

在搜索了许多(很多!)快速游乐场问题甚至制作这些代码后,我仍然在苦苦挣扎.

我已经将一个文本文件放在Resources包内容的文件夹中,它在playground(/var/folders/ ...)生成的运行临时文件中显示为别名(链接).

import UIKit

let bundle = NSBundle.mainBundle()

let myFilePath = bundle.pathForResource("dict1", ofType: "txt")

println(myFilePath)    // <-- this is correct, there is a shortcut to the Resource file at this location

var error:NSError?

var content = String(contentsOfFile:myFilePath!, encoding:NSUTF8StringEncoding, error: &error)

println(content!)  // <-- this is *NOT* the file contents [EDIT: see later note]

// Demonstrate there's no error
if let theError = error {
    print("\(theError.localizedDescription)")
} else {
    print("No error")
}
Run Code Online (Sandbox Code Playgroud)

问题是,content …

xcode ios swift swift-playground

12
推荐指数
2
解决办法
2万
查看次数

IBDesignable UIViewController

我希望能够在代码中布局我的视图控制器,但是看到界面构建器中显示的布局.

我知道我可以创建一个UIView子类,使其成为IBDesignable,并将其分配给视图控制器的视图,但这需要我创建此UIView子类的所有其他子视图属性,而不是视图控制器的属性.

真正的愿望是能够在代码中布局我的视图控制器,但在不重建项目的情况下快速查看任何更改.如果这可以通过游乐场来实现,那么描述如何做到这一点的答案也将受到赞赏.

谢谢你的任何建议.

interface-builder uiviewcontroller xcode6 swift-playground ibdesignable

12
推荐指数
1
解决办法
1532
查看次数

arc4random()和arc4random_uniform()不是真的随机吗?

我一直在使用arc4random()arc4random_uniform(),我总觉得它们不是完全随机的,例如,我是从一个数组中随机选择值,但是当我生成它们时,经常出现的值是相同的连续多次,所以今天我认为我会使用Xcode游乐场来看看这些函数是如何表现的,所以我首先测试arc4random_uniform来生成0到4之间的数字,所以我使用了这个算法:

import Cocoa

var number = 0

for i in 1...20 {
    number = Int(arc4random_uniform(5))
}
Run Code Online (Sandbox Code Playgroud)

我跑了几次,这里是大多数时候价值观的变化:
在此输入图像描述 在此输入图像描述

因此,您可以看到值重复增加和减少,并且一旦值处于最大值/最小值,它们通常会在特定时间内保持不变(请参阅第5步中的第一个屏幕截图,值在6期间保持为3)步骤,问题是它一点都不寻常,在我的测试中,函数实际上大部分时间都是这样.

现在,如果我们看一下arc4random(),它基本上是一样的:
在此输入图像描述 在此输入图像描述

所以这是我的问题:

  • 为什么这个函数会以这种方式运行?
  • 如何让它更随机?

谢谢.

编辑:
最后,我做了两个令人惊讶的实验,第一个带有真正的骰子:
在此输入图像描述
让我感到惊讶的是,我不会说它是随机的,因为我看到了与arc4random()和arc4random_uniform()所描述的非随机相同的模式,所以Jean-BaptisteYunès指出,人类不好看,数字序列是否真的是随机的.

我还想做一个更"科学"的实验,所以我做了这个算法:

import Foundation

var appeared = [0,0,0,0,0,0,0,0,0,0,0]
var numberOfGenerations = 1000

for _ in 1...numberOfGenerations {
    let randomNumber = Int(arc4random_uniform(11))
    appeared[randomNumber]++
}

for (number,numberOfTimes) in enumerate(appeared) {
    println("\(number) appeard \(numberOfTimes) times (\(Double(numberOfGenerations)/Double(numberOfTimes))%)")
}
Run Code Online (Sandbox Code Playgroud)

要查看每个数字出现的次数,并且有效地数字是随机生成的,例如,这里是控制台的一个输出:
0出现99次.
1次出现了97次.
2次出现了78次.
3次出现了80次.
4次出现了87次.
5次出现107次.
6次出现了86次.
7次出现了97次.
8次出现了100次.
9次出现91次. …

random darwin swift swift-playground

12
推荐指数
1
解决办法
4879
查看次数

Swift 2.0:在初始化存储属性之前在方法调用中使用self

刚开始看这个周末的Swift.我正在为我的班级创建一个id来快速比较对象.我想要一个不可变的id,所以应该使用let.

使用var和初始化id为""将修复"在初始化存储属性之前在方法调用中使用self",但当然它是可变的.我见过的所有其他问题都与超级/调用super.init有关,我没有.这非常令人沮丧,我不知道为什么它不直接.

class MagicCard {

    let id:String
    let name: String
    let manaCost: Int
    let description: String
    let attack: Int
    let defence: Int

    init (name: String, manaCost: Int, description: String, attack: Int, defence: Int) {
        self.name = name
        self.manaCost = manaCost
        self.description = description
        self.attack = attack
        self.defence = defence
        id = generateRandomID()
    }

    private func generateRandomID() -> String {
        let charSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
        let charSetArray = Array(charSet.characters)
        var id:String = ""
        for _ in (0..<10) {
            id.append(charSetArray[Int(arc4random()) % …
Run Code Online (Sandbox Code Playgroud)

swift swift-playground swift2

12
推荐指数
2
解决办法
3725
查看次数

Xcode自动完成功能在Swift playgrounds的Sources文件夹中不起作用

我正在一个Swift游乐场上工作,该游乐场在主文件旁边的Sources文件夹中包含多个文件.当我在主文件中键入某些内容(例如"UI")时,我会收到预期的自动填充建议.但是,当我在Sources文件夹中的文件中执行相同操作时,我会收到一个"哑"自动完成菜单,如此问题中所示:Xcode 9自动完成不工作100% - 部分工作

我已经DerivedData按照上面的问题的建议尝试删除,甚至完全重新安装Xcode.然而,问题并没有消失.我创建了一个新的游乐场,以确保它不是特定于此项目,并出现同样的问题.

编辑:我只是尝试在不同的Mac上做同样的事情,并观察到同样的问题.我想这只是Xcode中的一个与此特定安装或项目无关的错误.

xcode autocomplete swift swift-playground

12
推荐指数
1
解决办法
1489
查看次数

是否可以将第三方Objective-C代码导入Swift游乐场?

正如我在这里建议的那样,我已经能够通过桥接头将我现有的Objective-C代码导入到.swift文件中.到目前为止,我一直无法用一个快速的游乐场做类似的东西 - 它似乎没有像swift文件那样识别标题.

有趣的是,并且可能暗示对我的问题的否定是游乐场似乎没有像.swift/.m那样分享目标成员资格的概念.

任何人都可以使用这个或者不同的机制取得任何成功吗

ios swift swift-playground

11
推荐指数
1
解决办法
6465
查看次数

11
推荐指数
1
解决办法
2万
查看次数

SKShapeNode(circleOfRadius)导致OSX Playground中"无法识别的选择器发送到类"

以下操场导致时间线错误"无法识别的选择器发送到类..."

import SpriteKit
let node = SKShapeNode(circleOfRadius: 10)
Run Code Online (Sandbox Code Playgroud)

截图

当平台是iOS时,似乎工作正常.运行10.9.3

sprite-kit swift swift-playground

11
推荐指数
1
解决办法
1529
查看次数

Xcode 8游乐场实时视图不起作用

在我的Swift游乐场中,我输入以下代码来测试实时视图功能:

let view = UIView()

PlaygroundPage.current.liveView = view
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,实时视图不会显示在助理编辑器的右侧.最初我以为Xcode没有跑完游乐场.但我等待并等待它仍然没有表现出来.

截图: 在此输入图像描述

有帮助吗?

xcode ios swift swift-playground

11
推荐指数
3
解决办法
1万
查看次数

怎么检查,游戏的swift版本?

我只是使用swift教程在play ground(xcode-8.2)中测试我的代码.我遇到了以下示例代码:

单面范围

for name in names[2...] {
    print(name)
}
Run Code Online (Sandbox Code Playgroud)

现在我的游戏场显示错误:

在此输入图像描述

现在我觉得我的swift版本可能不支持这段代码!

我查看了这个答案,但它只为Xcode Project提供了解决方案.

我怎么能看到快速版的游戏场?

macos ios swift swift-playground

11
推荐指数
2
解决办法
3472
查看次数