我觉得array[index]应该返回一个可选的,因为索引可能超出范围.
这将允许代码,如:
if let object = array[index] {
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
使用扩展方法很容易做到这一点,但知道这种情况的真正原因将是很好的.
我目前正在使用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) 当其内在内容大小发生变化时,是否可以为已排列的子视图设置动画?
例如,假设我有一个排列的子视图,它包含固定到边缘的单个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当前从旧内容大小"跳转"到新内容大小,忽略动画块.
当然,另一种方法是手动找出排列的子视图的高度,并为该约束设置动画.如果可能的话,我想避免这种情况.
在Objective-C中,方法参数在添加换行符时根据冒号进行对齐.
在Swift中,情况似乎并非如此,我无法让它发挥作用.如何为Swift启用此功能?