小编tfr*_*377的帖子

添加Swift文件以测试目标而不是修复单元测试

我查看了很多博客,并尝试了很多东西让我的Swift单元测试在Xcode 6.0.1(或者6.1)中工作.我正在尝试访问应用程序目标中的类,所以我写了这一行:

var vc: LoginViewController!
Run Code Online (Sandbox Code Playgroud)

当然,我得到"使用未声明的类型'LoginViewController'"错误.

然后我尝试添加LoginViewController到我的测试目标,但随后我在项目中的其他类上"使用了未解析的标识符"错误.所以我尝试将这些类添加到我的测试目标中,但我最终得到了一个看似无穷无尽的错误来源,如下面的截图:

xcode迅速错误

将我的所有课程声明为公开课程会导致其他错误,这似乎是不好的做法.无论如何,在依赖于许多框架和类的Swift项目中包含单元测试?我只想从与本文中的代码完全相同的内容开始.

unit-testing access-control ios xctest swift

22
推荐指数
3
解决办法
9626
查看次数

在Swift的Dispatch闭包中修改struct实例变量

我正在使用DEVELOPMENT-SNAPSHOT-2016-06-06-aSwift 的版本.我似乎无法绕过这个问题,我已尝试@noescape在各个地方使用,但我仍然有以下错误:

闭包不能隐式捕获变异的自身参数

为了更好地解释,这是一个简单的例子:

public struct ExampleStruct {
  let connectQueue = dispatch_queue_create("connectQueue", nil)
  var test = 10

  mutating func example() {
    if let connectQueue = self.connectQueue {
      dispatch_sync(connectQueue) {
        self.test = 20 // error happens here
      }
     }
   }
 }
Run Code Online (Sandbox Code Playgroud)

这些Swift二进制文件中的某些东西必须已经改变,现在导致我以前工作的代码中断了.我想避免的一种解决方法是使我的结构体成为一个类,这有助于解决问题.如果还有其他方法,请告诉我.

struct grand-central-dispatch swift

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

立即刷新Firebase iOS SDK缓存

有没有办法手动并立即刷新Firebase缓存,使用iOS SDK,下拉最新数据(假设您在线)?例如,如果我对Firebase上的数据进行了一些更改,我希望我的应用能够立即反映出来,但是在启用持久性的情况下,通常需要重新启动应用.

我最近在我的应用程序中启用了持久性,如下所示:

Firebase.defaultConfig().persistenceEnabled = true
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但现在我的应用程序即使使用互联网连接也不会经常刷新它的数据.我正在使用这里提到的离线功能.

caching ios firebase swift

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

CLFloor在iOS 8中返回nil

所以我试图让Core Location中的CLFloor给我数据,而不是在Swift中返回nil,但是我无法做到.我已经尝试了自己的代码和来自NSHipster的以下代码:

import CoreLocation

class LocationManagerDelegate: NSObject, CLLocationManagerDelegate {
    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!) {
        let location: CLLocation? = locations[0] as? CLLocation
        if let floor: CLFloor? = location?.floor {
            println("Current Floor: \(floor?.level)")
        }
    }
}

let manager = CLLocationManager()
manager.delegate = LocationManagerDelegate()
manager.startUpdatingLocation()
Run Code Online (Sandbox Code Playgroud)

有人知道如何在设备或模拟器上完成这项工作,我相信答案会让很多人受益.如果有人知道这个或CLVisit的任何好资源,这也会有所帮助.

core-location ios swift ios8

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