小编Tom*_*Bąk的帖子

UI测试删除文本字段中的文本

在我的测试中,我有一个带有预先存在的文本的文本字段.我想删除内容并键入新字符串.

let textField = app.textFields
textField.tap()
// delete "Old value"
textField.typeText("New value")
Run Code Online (Sandbox Code Playgroud)

用硬件键盘删除字符串时没有为我生成记录.用软件键盘做同样的事后我得到了:

let key = app.keys["Usu?"] // Polish name for the key
key.tap()
key.tap() 
... // x times
Run Code Online (Sandbox Code Playgroud)

要么

app.keys["Usu?"].pressForDuration(1.5)
Run Code Online (Sandbox Code Playgroud)

我担心我的测试是依赖于语言的,所以我为我支持的语言创建了类似的东西:

extension XCUIElementQuery {
    var deleteKey: XCUIElement {
        get {
            // Polish name for the key
            if self["Usu?"].exists {
                return self["Usu?"]
            } else {
                return self["Delete"]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它在代码中看起来更好:

app.keys.deleteKey.pressForDuration(1.5)
Run Code Online (Sandbox Code Playgroud)

但它非常脆弱.从模拟器退出后Toggle software keyboard重置,我有一个失败的测试.我的解决方案不适用于CI测试.如何解决这个问题更加普遍?

uitextfield uikeyboard swift xcode7 xcode-ui-testing

63
推荐指数
6
解决办法
3万
查看次数

如何处理大型Swift项目?

在我用Swift编写的iPhone应用程序变得非常大(> 150 .swift文件+各种Objective-C库)后,Xcode开始表现得非常糟糕:

  • 每一次编译我都会遇到各种错误,例如:

    Command failed due to signal: Segmentation fault: 11

  • 编辑需要花费大量时间(MacBook Pro Retina上> 2分钟)
  • 等等.

我只是想知道每个人是否都有同样的问题,也许有人找到了减少这种噩梦的方法?

到目前为止我做了什么 - 我将项目拆分为几个动态框架,我从主项目链接,它有助于减少编译时间,但引入一些新问题.

我还使用iRamDisk将DerivedData文件夹保存在RAM中并定期从中删除所有文件,它有时会导致SourceKit崩溃.

xcode compilation ios swift

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

用于iOS和OS X开发的共享代码库

我们有一个相当丰富的电子学习应用程序,主要使用cocos2d构建.目前我们处于alpha状态并希望设置我们的项目结构,因此我们还可以构建一个Mac版本来定位Mac App商店.在UIKit中有大约80%的cocos2d和一些初始屏幕,必须移植到Mac(重写).

从单个代码库中定位Mac和iOS应用商店的建议设置是什么?我假设选择是:

  1. 在同一应用程序源代码根文件夹中创建2个xCode项目,并使用每个项目构建单个目标.这将是:Project.xcodeproj和ProjectMac.xcodeproj
  2. 将新的Mac目标添加到我们现有的iPad应用程序项目中,然后调整目标成员资格以获得所需的结果.这只是:Project.xcodeproj

更复杂的是,我们目前使用cocos2d作为iOS应用程序的静态库.我们还有一个名为CoreInfrastructure的库,它包含我们在所有项目中使用的大量代码.最近我发现我可以创建一个项目来同时构建一个面向Mac的框架和一个基于相同代码库的iOS库.这是通过从框架项目开始并添加目标来为iOS构建静态库来完成的.

所以只是想得到每个人的意见和见解.有人知道在上述选择中要注意的任何警告吗?任何为Mac和iOS应用程序商店构建的人都会同时分享他们的结构吗?在我们的库代码上添加一个目标...是应用程序的方法吗?

是否存在任何选择存档和分发版本的问题?

提前致谢.

macos xcode multiplatform code-sharing ios

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

Xcode A +源控制符号

我刚刚注意到XCode显示了与源代码控制相关的"A +"符号.这是什么意思?

git version-control xcode symbols

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

如何知道PHAsset是否已被修改?

更具体地说,您如何知道PHAsset当前版本的标的资产是否与原始资产不同?

我的用户只需要在必要时在当前或原始资产之间进行选择.然后我需要他们的回答PHImageRequestOptions.version.

objective-c photos ios photokit

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

在UI测试中,错误的单元格计入集合视图

我有一个集合视图的测试,其工作方式如下:

func testDeleteItem() {
    app.collectionViews.staticTexts["Item"].tap()
    app.buttons["Delete"].tap()

    XCTAssertEqual(app.collectionViews.cells.count, 2)
    XCTAssertFalse(app.collectionViews.cells.staticTexts["Item"].exists)
}
Run Code Online (Sandbox Code Playgroud)

点按后,会出现一个带删除按钮的新屏幕.点击按钮时,屏幕自动解除并重新加载集合视图.在UI中,一切都如预期的那样,但我得到两个断言都失败了.在第一个计数中它仍然是3,在第二个项目中它仍然存在.

xcode ui-testing ios swift xcode-ui-testing

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

将图片保存到网址时,PHPhotoLibrary错误

我在提供的url上创建了一个图片PHContentEditingOutput。当我UIImage像这样加载数据并将其保存时,它可以工作。

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    NSData *data = [NSData dataWithContentsOfURL:contentEditingOutput.renderedContentURL]
    UIImage *image = [UIImage imageWithData:data];
    [PHAssetChangeRequest creationRequestForAssetFromImage:image];
} completionHandler:^(BOOL success, NSError *error) {
     ...
}];
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用url方法失败时:

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:contentEditingOutput.renderedContentURL];
} completionHandler:^(BOOL success, NSError *error) {
     ...
}];
Run Code Online (Sandbox Code Playgroud)

错误:

错误域= NSCocoaErrorDomain代码= -1“操作无法完成。(可可错误-1。)”

更新:

当我尝试保存修改时出现相同的错误。

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    PHAssetChangeRequest *request = [PHAssetChangeRequest changeRequestForAsset:asset];
    request.contentEditingOutput = contentEditingOutput;
} completionHandler:^(BOOL success, NSError *error) {
     ...
}];
Run Code Online (Sandbox Code Playgroud)

该方法适用于视频(creationRequestForAssetFromVideoAtFileURL:),但不适用于图像。什么地方出了错?

url image ios photokit

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

CoreImage坐标系

CVPixelBufferRef从一个AVAsset. 我正在尝试对其应用 a CIFilter。我使用这些行:

CVPixelBufferRef pixelBuffer = ...
CVPixelBufferRef newPixelBuffer = // empty pixel buffer to fill
CIContex *context = // CIContext created from EAGLContext
CGAffineTransform preferredTransform = // AVAsset track preferred transform
CIImage *phase1 = [CIImage imageWithCVPixelBuffer:pixelBuffer];
CIImage *phase2 = [phase1 imageByApplyingTransform:preferredTransform];
CIImage *phase3 = [self applyFiltersToImage:phase2];

[context render:phase3 toCVPixelBuffer:newPixelBuffer bounds:phase3.extent colorSpace:CGColorSpaceCreateDeviceRGB()];
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到的结果方向不正确。例如,以纵向模式拍摄的视频是颠倒的。我想这个问题是在从去AVAssetCoreImage坐标系统(用于显示在Xcode中预览阶段2还提供了一个不正确的结果)。如何解决?

transformation core-image coordinate-systems ios cifilter

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

列出 Vapor 中的所有路线

我想检查 Vapor 应用程序正在服务的所有路线的列表。是否有脚本或运行时命令可以为我生成列表?

我正在寻找类似于rake routesRuby on Rails 的东西

routing swift vapor

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

具有Reactive Cocoa 4的ProprtyType的文本字段值

我正在尝试将文本字段内容映射到ProprtyType.我在视图模型中有属性:

var property = MutableProperty<Int?> (nil)
Run Code Online (Sandbox Code Playgroud)

我想把它捆绑起来 viewDidLoad

let producer = textField.rac_textSignal().toSignalProducer().map { text in Int(text as! String) }
viewModel.property <~ producer
Run Code Online (Sandbox Code Playgroud)

但是我得到了我不明白的错误:

二进制运算符'<〜'不能应用于'MutableProperty'类型的操作数(又名'MutableProperty>')和'SignalProducer'(又名'SignalProducer,NSError>')

我做错了什么?

uitextfield ios reactive-cocoa swift

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