小编Nic*_*hrn的帖子

如何对 Swift 定时器控制器进行单元测试?

我正在工作一个将利用 SwiftTimer类的项目。我的TimerController班级将Timer通过启动、暂停、恢复和重置实例来控制它。

TimerController 由以下代码组成:

internal final class TimerController {

    // MARK: - Properties

    private var timer = Timer()
    private let timerIntervalInSeconds = TimeInterval(1)
    internal private(set) var durationInSeconds: TimeInterval

    // MARK: - Initialization

    internal init(seconds: Double) {
        durationInSeconds = TimeInterval(seconds)
    }

    // MARK: - Timer Control

    // Starts and resumes the timer
    internal func startTimer() {
        timer = Timer.scheduledTimer(timeInterval: timerIntervalInSeconds, target: self, selector: #selector(handleTimerFire), userInfo: nil, repeats: true)
    }

    internal func pauseTimer() {
        invalidateTimer()
    } …
Run Code Online (Sandbox Code Playgroud)

unit-testing timer mocking swift

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

为什么我的状态栏没有改变首选样式?

我已在我的文件中View controller-based status bar appearance设置为。YESInfo.plist

视图控制器(不在导航堆栈中)通过模态转场呈现。在其中,我对 Swift 3/iOS 10 进行了以下属性覆盖:

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
Run Code Online (Sandbox Code Playgroud)

尽管如此,状态栏仍保留其默认(深色)样式。然而,当我打印preferredStatusBarStyleviewDidLoad,我得到rawValue1。检查出的文件1指的是.lightContent

我试图在状态栏的改变风格.lightContent,因为该视图包含UIVisualEffectViewUIBlurEffectStyle价值dark

我做错了什么吗?

statusbar ios swift swift3

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

在Swift中保持.doubleValue()的尾随零

我正在开发一个需要在Swift中显示和计算Double类型的应用程序。我创建的结构将Double用作参数,并且由于它也显示了它,因此我想在值的末尾保留尾随零。但是,我似乎无法阻止尾随零被截断。

这是我在游乐场中尝试过的事情:

let numberString = "-3.60"


// "3.60"
let positiveString = numberString.stringByReplacingOccurrencesOfString("-", withString: "", options: nil, range: nil)


// 3.6
let positiveDouble = (positiveString as NSString).doubleValue


// "3.60"
let positiveDoubleString = NSString(format: "%0.02f", positiveDouble)


// 3.6
let positiveDoubleWithZeros = positiveDoubleString.doubleValue
Run Code Online (Sandbox Code Playgroud)

3.6无论如何,我都会不断取得结果。我缺少转换的显而易见的部分是什么?

double swift

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

为什么我的默认属性值仍然显示为Init()中的参数?

我有一个描述需要测试的海水参数的协议:

protocol Parameter {

    var name: String { get }
    var unit: Unit { get }
    var value: Double { get }

}
Run Code Online (Sandbox Code Playgroud)

我有一个结构Calcium符合,符合Parameter:

struct Calcium: Parameter {

    var name: String = "Calcium"
    var unit: Unit = UnitDispersion.partsPerMillion
    var value: Double

}
Run Code Online (Sandbox Code Playgroud)

由于nameunit参数Calcium都有默认值,为什么我需要在init方法中提供它们?我不应该只需要提供一个值value吗?

我正在尝试理解面向协议的编程,并且非常感谢这里的一些指导.

在此输入图像描述

protocols swift protocol-oriented

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