gpt4 book ai didi

ios - Swift Xcode NSURLConnection.sendSynchronousRequest 已弃用

转载 作者:行者123 更新时间:2023-11-30 13:04:02 27 4
gpt4 key购买 nike

我刚刚开始 iPhone 开发,感谢许多人的帮助,我得到了一个简单的应用程序。我使用以下代码从 mysql 数据库中提取数据。该代码位于 commonfun.swift 文件中,我在其中保存所有函数,并在需要时从各种 swift 文件调用。由于通信链路的原因,它将尝试 30 秒。

一切都很好。它是同步的,因为它在函数的“末尾”将数据加载到数组中,并“返回”到调用的 swift 文件。

示例代码如下:

 import UIKit
class commonfunc
{
var result1: [String] = [];

func DB_To_Array_Swift(whattoget: String, inout jsondata: NSDictionary)
... set up stuff
... call php to get data
while while_exit == "NO"
{
number_of_retries = number_of_retries + 1
if number_of_retries > 30
{
break
}
do
{
urlData = try NSURLConnection.sendSynchronousRequest(request, returningResponse:&response)
while_exit = "YES"
}
catch let error as NSError
{
tmperror = error
while_exit = "NO"
sleep(1)
}
}
... load data into an array and return to calling swift file.

效果很好!并从具有不同标准的各种 swift 文件中调用。

现在它说 NSURLConnection.sendSynchronousRequest 已贬值。

我尝试用 NSURLSession.sharedSession() 替换它,但它运行异步并返回到主 swift 文件。

我尝试用下面的内容替换它。但是......

 while while_exit == "NO"
{
number_of_retries = number_of_retries + 1
if number_of_retries > 30
{
while_exit == "YES"
break
}
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request)
{
(
let urldata, let response, let error) in
if error != nil
{
tmperror = error!
while_exit = "NO"
sleep(1)
}
let dataString = NSString(data: urldata!, encoding: NSUTF8StringEncoding)
print(dataString)

while_exit = "YES"
}
print("\n here5")
task.resume()
print("\n here6")

}
while while_exit == "NO"
{
sleep(1)
}

我有办法让它在 commonfunc.swift 中看起来同步

谢谢

最佳答案

var 数据:NSData? = 零 让信号量:dispatch_semaphore_t =dispatch_semaphore_create(0) 让任务 = NSURLSession.sharedSession().dataTaskWithRequest(request,completionHandler: { taskData, _, 错误 -> () 中 数据 = 任务数据 如果数据 == nil,则让 error = error {print(error)} dispatch_semaphore_signal(信号量); }) 任务.resume() dispatch_semaphore_wait(信号量,DISPATCH_TIME_FOREVER) 返回数据

关于ios - Swift Xcode NSURLConnection.sendSynchronousRequest 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com