小编Bar*_*iak的帖子

等到任务完成

我怎么能让我的代码等到DispatchQueue中的任务完成?它需要任何CompletionHandler或其他东西吗?

func myFunction() {
    var a: Int?

    DispatchQueue.main.async {
        var b: Int = 3
        a = b
    }

    // wait until the task finishes, then print 

    print(a) // - this will contain nil, of course, because it
             // will execute before the code above

}
Run Code Online (Sandbox Code Playgroud)

我正在使用Xcode 8.2并在Swift 3中编写.

multithreading asynchronous grand-central-dispatch swift swift3

80
推荐指数
3
解决办法
8万
查看次数

用于NEVPNManager的Swift中的Keychain引用

我正在尝试使用Xcode中的Swift连接到VPN.我正在使用KeychainSwift来保存钥匙串参考.我的代码看起来像这样:

    private func connectVPN(completion: @escaping () -> Void) { 
        let keychain = KeychainSwift()
        keychain.set("<mypassword>", forKey: "passref")
        keychain.set("<sharedsecretpassword>", forKey: "secretref")

        NEVPNManager.shared().loadFromPreferences { error in
            let vpnhost = "<11.11.11.11>"
            let username = "<myusername>"

            let p = NEVPNProtocolIPSec()
            p.username = username
            p.localIdentifier = username
            p.serverAddress = vpnhost
            p.remoteIdentifier = vpnhost
            p.authenticationMethod = .sharedSecret
            p.disconnectOnSleep = false

            p.sharedSecretReference = keychain.getData("secretref")
            p.passwordReference = keychain.getData("passref")

            var rules = [NEOnDemandRule]()
            let rule = NEOnDemandRuleConnect()
            rule.interfaceTypeMatch = .any
            rules.append(rule)

            NEVPNManager.shared().localizedDescription = "My VPN"
            NEVPNManager.shared().protocolConfiguration = p
            NEVPNManager.shared().onDemandRules = …
Run Code Online (Sandbox Code Playgroud)

vpn keychain swift

10
推荐指数
1
解决办法
545
查看次数

用户默认值还是核心数据?

我需要在我的应用程序(Xcode 9.1,Swift 4)中存储一些对象。目前,我将其存储为:

class myItemManager {

    var items: [myItem]? {
        didSet {
            Cache.c.items = items
        }
    }

    static var manager = myItemManager() {
        didSet {
            myItemManager.manager.items = Cache.c.items
        }
    }
}

class Cache {

    private let uds = UserDefaults.standard

    static let c = Cache()

    var items: [(myItem)]? {
        get {
            if let decoded = uds.object(forKey: Constants.Cache.myItem) as? Data {
                let decodedItems = NSKeyedUnarchiver.unarchiveObject(with: decoded) as? [myItem]
                return decodedItems
            } else {
               return nil
            }
        }
        set {
            let encodedData: Data …
Run Code Online (Sandbox Code Playgroud)

xcode caching core-data nsuserdefaults swift

0
推荐指数
1
解决办法
3551
查看次数

避免不断重建Docker映像

我正在使用Docker构建应用程序。我的Dockerfile看起来像这样:

FROM python:3.7.0
WORKDIR /app
COPY . /app
RUN apt-get -y update && apt-get -y install apt-utils build-essential libxml2-dev zlib1g-dev python-dev python-pip pkg-config libffi-dev libcairo-dev
RUN pip install -r requirements.txt
CMD ["./run"]
Run Code Online (Sandbox Code Playgroud)

我的项目结构:

.
??? Dockerfile
??? requirements.txt
??? run
??? src
    ??? stuff
Run Code Online (Sandbox Code Playgroud)

在要求,我把plotlypytestpython-igraph。问题是,python-igraph卡在这部分上

Running setup.py bdist_wheel for python-igraph: started
Running setup.py bdist_wheel for python-igraph: still running...
Run Code Online (Sandbox Code Playgroud)

在相当长的一段时间内,但最终它会拉取数据并生成图像。但是,如此长时间每次重建项目都是不可接受的。

提取彼此不依赖的模块的正确方法是什么?

python layer igraph docker plotly

0
推荐指数
1
解决办法
195
查看次数