小编Chr*_*ell的帖子

有没有理由为什么array [index]不返回可选项?

我觉得array[index]应该返回一个可选的,因为索引可能超出范围.

这将允许代码,如:

if let object = array[index] {
  // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

使用扩展方法很容易做到这一点,但知道这种情况的真正原因将是很好的.

swift

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

如何在Swift中模拟UIApplication?

我目前正在使用Quick + Nimble在Swift中进行单元测试.我正在构建一个Inviter通过不同方法发送应用程序邀请的类.

我需要模拟UIApplication以验证我的代码调用openURL.

我的代码到目前为止:

import Quick
import Nimble
import OCMock

extension Inviter {
    convenience init(usingMockApplication mockApplication: UIApplication) {
        self.init()
        application = mockApplication
    }
}

class MockUIApplication : UIApplication {
    var application = UIApplication.sharedApplication()

    var openedURL: String?

    override func openURL(url: NSURL) -> Bool {
        openedURL = url.absoluteString
        return true
    }
}

class InviterSpec: QuickSpec {
    override func spec() {

        describe("Inviter") {
            var mockApplication = MockUIApplication()
            var inviter = Inviter(usingMockApplication: mockApplication)

            beforeEach() {
                inviter = Inviter(usingMockApplication: mockApplication) …
Run Code Online (Sandbox Code Playgroud)

bdd unit-testing swift

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

动画UIStackView arrangeSubview内容大小更改

当其内在内容大小发生变化时,是否可以为已排列的子视图设置动画?

例如,假设我有一个排列的子视图,它包含固定到边缘的单个UILabel.该标签有少量文字.新文本进来,比前一个文本大.标签的内在内容大小现在更大.

我希望能够像这样动画它:

 stackView.layoutIfNeeded()
 self.label.text = self.expanded ? textTwo : textOne
 UIView.animateWithDuration(0.3) { () -> Void in
     self.stackView.layoutIfNeeded()
 }
Run Code Online (Sandbox Code Playgroud)

stackview当前从旧内容大小"跳转"到新内容大小,忽略动画块.

当然,另一种方法是手动找出排列的子视图的高度,并为该约束设置动画.如果可能的话,我想避免这种情况.

ios autolayout uistackview

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

你如何使用冒号在Swift中自动对齐方法参数?

在Objective-C中,方法参数在添加换行符时根据冒号进行对齐.

在Swift中,情况似乎并非如此,我无法让它发挥作用.如何为Swift启用此功能?

xcode swift

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

标签 统计

swift ×3

autolayout ×1

bdd ×1

ios ×1

uistackview ×1

unit-testing ×1

xcode ×1