无法将项目添加到数组

时间:2019-03-26 23:00:24

标签: swift

我在处理数组时遇到了麻烦。我创建了一个名为“硬币”的数组

Login-AzureRmAccount -subscription <YourSubscriptionID>
$spn= Get-AzureRmADServicePrincipal -spn <YourSPN>
Set-AzureRmKeyVaultAccessPolicy -VaultName <YourVaultName> -ObjectId $spn.Id -PermissionsToSecrets get,list;

然后将对象附加到函数中

var coins = [Coin]()

当我在功能范围内打印“ self.coins.count”时,我可以看到计数在增加。在函数之外,它正在读取数组中的0个项目。

1 个答案:

答案 0 :(得分:1)

Swift 5撰写

问题是您有一个AsynchronousURL请求。这意味着无需等待任务完成。

在您遇到问题时,在功能coins 之后被打印,在 之后 URL请求。但是,如果在功能之外打印coins,则会在 之前进行打印,因为URL请求尚未完成 。 strong>。

要解决此问题,您需要创建一个完成处理程序。一个基本的显示在这里:

// Our errors which could occur
enum SomeError: Error { case unknown }

// Function which is ASYNCHRONOUS
func someAsyncFunction(completion: @escaping (Result<Int, SomeError>) -> ()) {
    // Temporary for this example
    let success = true
    let myNum = 3

    // Return value if it is a success, otherwise return the error
    if success {
        completion(.success(myNum))
    } else {
        completion(.failure(.unknown))
    }
}


// Call
someAsyncFunction { (result) in
    print("Result:  \(result)")
    /* PRINT COINS HERE */
}

请参阅hackingwithswift.comResult中使用Swift 5的完成处理程序的完整指南。