我在处理数组时遇到了麻烦。我创建了一个名为“硬币”的数组
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个项目。
答案 0 :(得分:1)
Swift 5
撰写问题是您有一个Asynchronous的URL
请求。这意味着无需等待任务完成。
在您遇到问题时,在功能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.com
的Result
中使用Swift 5
的完成处理程序的完整指南。