小编Tre*_*vör的帖子

如何在标签栏控制器中添加"入口点箭头"?

在Xcode 6.2测试版,我能做出一些视图控制器,如"视图 - 控制器"或"导航视图控制器"通过拖放就可以了"切入点箭头"我接口的切入点,它给了我这样的事情: 在此输入图像描述
但是,当我想拖动标签栏控制器上这个箭头,这是行不通的,所以是一个错误或我应该做它以另一种方式?

xcode interface-builder ios

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

期望 SwiftUI DynamicProperty 属性包装器的内部更新触发视图更新是否正确?

我正在尝试创建 SwiftUI 支持的自定义属性包装器,这意味着对相应属性值的更改会导致 SwiftUI 视图的更新。这是我所拥有的简化版本:

@propertyWrapper
public struct Foo: DynamicProperty {
    @ObservedObject var observed: SomeObservedObject

    public var wrappedValue: [SomeValue] {
        return observed.value
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到即使 myObservedObject包含在我的自定义属性包装器中,SwiftUI 仍然会捕获更改,SomeObservedObject只要:

  • 我的属性包装器是一个结构
  • 我的财产包装符合 DynamicProperty

不幸的是,文档很少,我很难判断这是否仅适用于当前的 SwiftUI 实现。

DynamicProperty(在 Xcode 中,而不是在线)的文档似乎表明这样的属性是从外部更改导致视图重绘的属性,但是无法保证当您使自己的类型符合此协议时会发生什么。

我可以期待这在未来的 SwiftUI 版本中继续工作吗?

swift swiftui property-wrapper

16
推荐指数
1
解决办法
1569
查看次数

使用属性作为同一类中方法的默认参数值

在Swift类中,我想使用属性作为同一类方法的默认参数值.

这是我的代码:

class animal {
    var niceAnimal:Bool
    var numberOfLegs:Int

    init(numberOfLegs:Int,animalIsNice:Bool) {
        self.numberOfLegs = numberOfLegs
        self.niceAnimal = animalIsNice
    }

    func description(animalIsNice:Bool = niceAnimal,numberOfLegs:Int) {
        // I'll write my code here
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我不能将我的niceAnimal属性用作默认函数值,因为它触发了我一个编译时错误:

'animal.Type'没有名为'niceAnimal'的成员

难道我做错了什么 ?或者在Swift中是不可能的?如果那是不可能的,你知道为什么吗?

swift

14
推荐指数
1
解决办法
5727
查看次数

无法理解碰撞位掩码的工作原理

我试图在Swift中使用碰撞位掩码和接触测试位掩码,我希望两个对象不要碰撞在一起,所以我在做:

firstNode.physicsBody?.collisionBitMask = 0b01
secondNode?.collisionBitMask = 0b10
Run Code Online (Sandbox Code Playgroud)

由于SpriteKit不上这两个数字与操作,应该没有结果是00因为10 & 01 = 00

那么为什么碰撞会发生呢?

谢谢.

sprite-kit skphysicsbody swift

13
推荐指数
2
解决办法
2096
查看次数

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
查看次数

Visual Studio Code 无法正确执行 TypeScript 代码

我正在尝试将 Visual Studio Code 配置为使用 TypeScript(在 Node 包中),我也在使用ts-jest/Jest来创建测试,此外,我还安装了 Jest 扩展。

我已经能够弄清楚如何使断点工作,但现在我注意到我无法正确地介入我的代码,我什至不能 100% 确定断点工作完美。

单击 step 按钮时,将恢复执行,并且不会在下一行再次停止,唯一让它停止的方法是在我想要的位置放置其他断点。代码在断点设置为 AFAICT 的正确位置停止。

编辑:实际上,步进有时会再次停止,但似乎是来自实现的 js 代码(例如,console.log 步骤到与日志相关的代码,但永远不会再次踩到我的代码)

编辑#2:通过尝试使用更简单的项目重现问题,我意识到不再导入我正在使用的库(Phaser)修复了问题,我希望这可以帮助隔离问题的原因。

编辑 #3:这是一个链接,可以重现我正在谈论的问题:https : //github.com/adtrevor/VSCodeDebugIssue 如果要测试它,只需克隆它,npm install然后启动“调试玩笑测试”运行/调试面板中的任务。设置断点line 23hey.ts(第一指令barFunction()),调试器将停在那里,但如果你在执行代码,你应该注意到,在某些时候你离开当前范围(执行后console.log("B"),再也不会回到它在我的情况)。

编辑 #4:这是一个更完整的示例,显示了https://github.com/adtrevor/TSVSCodeSOQuestion/问题。如果您克隆它,安装依赖项,并在 ChunkManager.ts 的第 156 行设置断点,您会注意到即使我应用了@GiacomoDeLiberali 的更改,步进也无法正常运行。不过,也许这个错误是相关的。

我完全不知道配置有什么问题,也不知道首先要看哪里,因为我没有关于调试的其他错误消息。这是我的配置文件的内容:

启动文件

{
  // Use IntelliSense to learn about possible Node.js debug attributes.
  // Hover to view descriptions of existing …
Run Code Online (Sandbox Code Playgroud)

typescript jestjs visual-studio-code ts-jest

10
推荐指数
1
解决办法
1705
查看次数

如何关闭Scene Kit中的环境光(使用Swift)?

当我使用Swift语言创建一个新的Scene Kit游戏时,已经出现了一些结果: 在此输入图像描述
我想要关闭点亮立方体的环境光,但我不知道如何做到这一点,因为没有明确附加到任何节点的任何光.

她的游戏视图控制器代码:

import SceneKit
import QuartzCore

class GameViewController: NSViewController {

    @IBOutlet var gameView: GameView

    override func awakeFromNib(){
        // create a new scene
        let scene = SCNScene()

        // create and add a camera to the scene
        let cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()
        scene.rootNode.addChildNode(cameraNode)

        // place the camera
        cameraNode.position = SCNVector3(x: 0, y: 0, z: 2)

        // create and add a 3d box to the scene
        let boxNode = SCNNode()
        boxNode.geometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: …
Run Code Online (Sandbox Code Playgroud)

scenekit swift

8
推荐指数
1
解决办法
4493
查看次数

使用Swift`is`检查泛型类型

可以说我有一个类型为type的变量Any,我想知道这是否是数组,这是我想做的:

if myVariable is Array { /* Do what I want */ }
Run Code Online (Sandbox Code Playgroud)

但是Swift需要提供数组的通用类型,例如:

if myVariable is Array<Int> { }
Run Code Online (Sandbox Code Playgroud)

但是我不想检查泛型类型,我只是想知道这是否是数组,我试过了:

if myVariable is Array<Any> { }  
Run Code Online (Sandbox Code Playgroud)

希望它可以匹配每种类型的数组,但是也不起作用...(它不匹配所有类型的数组,因此,如果我的变量是一个Int数组,则不会调用此代码)

我该怎么办 ?

谢谢。

使用似乎无效的方法解决方案示例进行编辑:

struct Foo<T> {}

struct Bar {
    var property = Foo<String>()
}

var test = Bar()

let mirror = Mirror(reflecting: test)

// This code is trying to count the number of properties of type Foo
var inputCount = 0
for child in mirror.children {
    print(String(describing: type(of: child))) …
Run Code Online (Sandbox Code Playgroud)

generics swift

8
推荐指数
2
解决办法
3379
查看次数

在CMMotionActivity发生变化时,是否有办法在后台通知我的应用程序?

我想知道如果CMMotionActivity发生变化,系统是否可以在后台唤醒应用程序,例如,如果用户在坐下后开始步行/跑步,我希望能够执行一些代码并安排本地通知.

有没有办法要求系统在后台唤醒我的应用程序?

编辑:通过查看引用,它似乎是不可能的("[...]并且在您的应用程序被暂停时不会提供更新."),但也许还有其他方法?

background-process ios core-motion swift

7
推荐指数
1
解决办法
773
查看次数

Combine 如何知道 ObservableObject 实际改变了

ObservableObjectCombine 框架定义的协议有一个objectWillChange发布者属性,它让你知道这个对象的属性何时发生变化,这意味着,如果这个发布者的订阅者在收到 this will change 事件时读取它的值,他们仍然会读取更改之前的值,我试图理解的是:

  • 当您可以订阅的唯一事件似乎是will change一个时,像 SwiftUI 这样的框架如何知道该值实际上确实发生了变化(即:它们如何获得新值)?底层机制是否是Combine 框架中公开可用的API?
  • ObservableObject收到 will change 事件后,如何获取 an 的实际新值?

swift combine

7
推荐指数
3
解决办法
3424
查看次数