小编Ale*_*lex的帖子

Swift 3 Decimal,NSDecimal和NSDecimalNumber

我正在尝试使用NumberFormatterSwift 3 Decimal,但我对如何Decimal实现真正感到困惑.我遇到的问题是这Decimal是一个结构,所以NSDecimalNumber每次我想使用格式化程序时我都必须将它连接起来,我想避免使用它.

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
let decimal = Decimal(integerLiteral: 3)
let string = formatter.string(from: decimal as NSDecimalNumber)
Run Code Online (Sandbox Code Playgroud)

这是实现我自己的扩展需要一个理想的解决方法Decimal吗?

extension NumberFormatter {
    open func string(from number: Decimal) -> String? {
        return string(from: number as NSDecimalNumber)
    }
}
Run Code Online (Sandbox Code Playgroud)

更一般地说,每次我需要传入一个对象类型我是否需要桥接Decimal或编写更多扩展?

编辑

我想我更喜欢NSDecimal DecimalNSDecimalNumberSwift 3一样.我根本不清楚这里发生了什么.我应该替换NSDecimalNumberDecimal的斯威夫特3?文档写道:

Swift覆盖到Foundation框架提供了Decimal结构,该结构桥接到NSDecimalNumber类.Decimal值类型提供与NSDecimalNumber引用类型相同的功能,并且这两者可以在与Objective-C API交互的Swift代码中互换使用.此行为类似于Swift如何将标准字符串,数字和集合类型桥接到其对应的Foundation类.

起初我以为意味着Decimal是新的NSDecimalNumber一样Error是新的NSError-但现在我不那么肯定.这也说'十进制值类型提供与NSDecimalNumber引用类型相同的功能' - 这是真的吗?我似乎无法获得相同的功能(首先没有桥接,当然,这是他们的意思吗?).我在这里和那里找到了一些帖子和一些信息,但没有任何令人信服的信息.有没有人有任何知识或见解? …

ios swift swift3

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

静态成员不能在协议元类型Swift上使用

我正在尝试为我拥有的协议类型创建一个闭包,但是我收到以下错误

静态成员'menuItemSorter'不能用于协议元类型'MenuItem.Protocol'

这是我试图在操场上运行的代码的简化版本.

protocol MenuItem {
    var order: Int {get}
}

extension MenuItem {
    static var menuItemSorter: (MenuItem, MenuItem) -> Bool {
        return { $0.order < $1.order }
    }
}

class BigItem : MenuItem {
    var order: Int = 1
}

let bigItems = [BigItem(), BigItem()]

let sorter = MenuItem.menuItemSorter
Run Code Online (Sandbox Code Playgroud)

我希望能够在MenuItem上有一个类/静态var方法,可以对menuItems进行排序,这是最好的方法吗?

ios swift

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

识别选定的状态Swift UI测试

我想弄清楚Xcode在Swift中的新UI测试中在分段控件上选择了哪个段.

我可以获得segmentedControl XCUIElement,以及与之关联的"按钮",但我不确定如何测试所选属性.

如果这是我错过的显而易见的事,请提前抱歉.

xcode swift xcode-ui-testing

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

Swift2 UI测试 - 等待元素出现

我希望测试暂停并等待元素出现在屏幕上然后再继续.

我没有看到为此创建期望并等待使用的好方法

public func waitForExpectationsWithTimeout(timeout: NSTimeInterval, handler: XCWaitCompletionHandler?)
Run Code Online (Sandbox Code Playgroud)

创造我一直在使用的期望的方法一直是

public func expectationForPredicate(predicate: NSPredicate, evaluatedWithObject object: AnyObject, handler: XCPredicateExpectationHandler?) -> XCTestExpectation
Run Code Online (Sandbox Code Playgroud)

但这需要一个已经存在的元素,而我想让测试等待一个尚不存在的元素.

有谁知道最好的方法吗?

swift swift2 xcode-ui-testing

13
推荐指数
3
解决办法
7113
查看次数

使用Xcode UI测试查找父母或兄弟姐妹

我正在使用UITableViews,我想找到与单元格内的控件或静态文本对应的单元格.

更一般地说,找到给定元素的任何父级或兄弟的好方法将是很好的知道.

现在我只是循环遍历细胞,直到找到正确的细胞,我想避免.我尝试过使用app.tables.cells.containingPredicate,但没有运气.

let pred = NSPredicate { (element, bindings: [String : AnyObject]?) -> Bool in
      return element.staticTexts["My Text"].exists
}
let cells = app.tables.cells.containingPredicate(pred)
Run Code Online (Sandbox Code Playgroud)

传递给谓词块的元素是XCElementSnapshot,它没有staticTexts.

编辑

James是正确的,containsType:identifier:方法效果很好.

在快速,它看起来像这样

let cell = app.tables.cells.containingType(.StaticText, identifier: "My Text")
Run Code Online (Sandbox Code Playgroud)

如果方法签名中的标识符与元素的标识符属性不对应,那么它只是通过括号中的文本访问元素的常规方式.

app.cells.staticTexts["My Text"] 
Run Code Online (Sandbox Code Playgroud)

ios swift swift2 xcode-ui-testing

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

Xcode Swift UI测试-模拟器硬件键盘

我正在使用xcode中的swift自动执行UI测试,并且需要始终禁用硬件键盘进行测试。有没有一种方法可以确保在没有人工干预的情况下禁用硬件键盘,即命令行脚本?这些UI测试将在构建服务器上运行,因此不希望手动启动模拟器并关闭硬件键盘。

我已经看过与模拟器进行交互的xcrun simctl选项,但是我还无法弄清楚该怎么做。另外,我发现了几条SO帖子,表明我试图做的事情是不可能的,但是我不确定这些帖子是否在问我在问什么。

我可以通过外壳程序脚本将iOS模拟器的硬件键盘设置为关闭吗?

xcode ios ios-simulator xcode-ui-testing

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

检查远程Git上是否存在本地分支

我想看看我的新创建的本地分支是否存在于远程控制器上,并带有一行命令.就像制作允许我输入的别名或功能一样

git remoteExists <branchName>
Run Code Online (Sandbox Code Playgroud)

现在我手动列出遥控器上的每个分支,并检查我的本地分支是否存在.这并不像我想的那么容易,因为我们的遥控器有数百个分支,许多具有相似的名称.

我正在切换分支,经常处理不同的事情,一次可能是6-7,而且很难记住我是否完成并推动了一个分支,或者我是否还需要完成它.

我已经搜索并找到了一些方法来做类似的事情,但许多似乎不必要地复杂,有没有更简单的方法来做到这一点?

编辑

要清楚我在做什么.我从一个远程分支机构开始,然后关闭它.我正在改变我当地的分支并推动.我不想设置上游分支,因为我不再使用这个分支; 处理远程分支的人员将查看我的更改并将它们集成到远程版本中.

这有效:

git diff <branchName> remotes/origin/<branchName>
Run Code Online (Sandbox Code Playgroud)

致命:模糊的参数'remotes/origin/TestReadyBranch':未知的修订或路径不在工作树中.使用' - '将路径与修订版分开,如下所示:'git [...] - [...]'

看到这个错误后,我会知道遥控器上不存在分支.有更清洁的方法吗?

git branch

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

重新运行单元测试失败 - Xcode XCTest

当我运行我的XCTests时,我想自动重新运行一次任何失败的集成(单元/ ui)测试.这可能吗?

这将在同一测试中完成,而不必在我的测试或测试的任何部分再次点击"运行".我正在从命令行运行所有测试.

我正在进行使用网络调用服务器的UI测试.如果存在严重的服务器问题,则测试将/应该失败并报告错误.但是,如果它只是请求的临时问题,那么自动重新运行测试并查看它是否通过将会很好.此外,随着Xcode UI测试的当前状态,有一些偶然的问题,它会因为一个不明原因而崩溃,并且自动重新运行测试以查看它是否第二次通过将是很好的.

如果它可以输出发生的事情,那将是特别好的,即"测试失败第一次,因为失败得到刷新快照,但第二次通过"

xcode xctest xcode-ui-testing

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

Swift UI测试查找自定义UIView XCUIElement

我想找一个UIView XCUIElement,但我似乎找不到它.这个UIView用于向用户显示某些信息,我需要能够在某些情况下测试它是否在屏幕上.我将view.userInteractionEnabled设置为YES.

我已经尝试点击'记录'并选择它,但它似乎不可选,因为当我点击它时它不会编写代码来找到它.

我已尝试以编程方式定位它,但XCUIElementType Any和Other似乎没有找到它,我没有看到更合适的View.

我已经尝试在故事板中设置可访问性,但是在运行单元测试时,所有可访问性似乎都消失了.

这似乎应该是非常基本的,如果我在这里错过了什么,那就很抱歉.

coded-ui-tests swift swift2

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

Swift UI测试 - 用户通知系统警报

我正试图通过跟随帖子中提供的流程来通过用户通知系统警报,这是在UI测试备忘单和SO上的一些其他帖子中提到的相同流程.

Xcode7 | Xcode UI测试| 如何处理位置服务警报?

我有一个奇怪的问题,我无法按下确定按钮.这是我的代码

    addUIInterruptionMonitorWithDescription("User Notifications") { (alert) -> Bool in
        let okButton = alert.buttons["OK"]
        let dontAllowButton = alert.buttons["Don\u{2019}t Allow"]

        print(okButton.frame)
        print(dontAllowButton.frame)

        okButton.tap() // Taps the dontAllowButton ??

        return true
    }

    launchFinished() // wait for app to load and notification to show
    app.tap()
Run Code Online (Sandbox Code Playgroud)

我使用后,测试成功进入处理程序,app.tap()并且找到并存在按钮,但实际上似乎无法点击确定按钮!当我尝试点击"确定"按钮时,它会点击"不允许"按钮,当我尝试点击"不允许"按钮时,它不会点击任何内容.

按钮的框架也与屏幕上的内容不匹配.

用户通知警报按钮

当我调试并查看它们的帧时:

okButton =(431.5,377.0,44.0,135.0)

dontAllowBtn =(431.5,512.0,44.0,135.0)

这似乎表明它们具有相同的X值,并且一个在另一个之上,这实际上没有任何意义.

此外,我已经尝试使用XCUICoordinate在按钮附近创建一些坐标并点击坐标而不是按钮,这对我在应用程序的其他位置工作正常,但似乎没有坐标点击注册.

我如何通过此警报?

编辑

我在使用Xcode 7.1.1,并且位置服务也出现了同样的问题.它似乎与横向模式有关,这使得它无法正常工作.当我创建一个新的测试应用程序并运行上面的代码时,它在纵向模式下工作正常.当我将其切换到横向模式时,它具有上述行为并且不起作用.

编辑2

我向Apple提交了一份错误报告.

swift xcode-ui-testing

5
推荐指数
0
解决办法
1047
查看次数

崩溃:引擎标记为需要优化

我在该字段中有一个应用程序,该应用程序在iOS 11中的某个时间开始崩溃,并显示以下消息:

崩溃:引擎已标记为需要优化,即使它已经在进行中。

崩溃位于中的某处UIKit -> Foundation -> CoreFoundation -> libocj.A.dylib -> CoreFoundation,但是我删除的崩溃日志已被删除,因此我所了解的不多。我通常将它们表示为符号,但是该符号仅适用于我的应用程序,不适用于库代码,因此,我需要从此处提供的字段中获取设备,以从该设备获取完整的崩溃日志。

在此之前,是否有人对导致这种崩溃的原因有任何线索,或者有任何良好的起点开始调查?

0 CoreFoundation exceptionPreprocess (in CoreFoundation) + 148
1 libobjc.A.dylib objc_exception_throw + 56
2 CoreFoundation +[NSException raise:format:] (in CoreFoundation) + 0
3 Foundation -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] (in Foundation) + 112
4 Foundation -[NSISEngine _optimizeIfNotDisabled] (in Foundation) + 320
5 Foundation -[NSISEngine tryToAddConstraintWithMarker:expression:integralizationAdjustment:mutuallyExclusiveConstraints:] (in Foundation) + 664
6 Foundation -[NSLayoutConstraint _addLoweredExpression:toEngine:integralizationAdjustment:lastLoweredConstantWasRounded:mutuallyExclusiveConstraints:] (in Foundation) + 284
7 Foundation -[NSLayoutConstraint _addToEngine:integralizationAdjustment:mutuallyExclusiveConstraints:] (in Foundation) + 272
8 UIKit -[UIView(UIConstraintBasedLayout) _layoutEngine_didAddLayoutConstraint:roundingAdjustment:mutuallyExclusiveConstraints:] (in …
Run Code Online (Sandbox Code Playgroud)

ios

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

在块崩溃中分配NSError的调用方法

我想了解为什么这会因EXC_BAD_ACCESS错误而崩溃.它从方法调用返回正常,但之后立即崩溃[self runMethodThatAssignsError:&error].

我在这里找到了类似的帖子,但它没有解释发生了什么,而且相当陈旧.

- (void)checkError {
    NSError *error;
    [self runMethodThatAssignsError:&error]; // crashes after returning
    NSLog(@"success");
}

- (BOOL)runMethodThatAssignsError:(NSError **)error {
    [@[@1] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        *error = [NSError errorWithDomain:@"1" code:7 userInfo:@{}];
    }];
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c objective-c-blocks automatic-ref-counting

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