gpt4 book ai didi

swift - 使用 Swift 3.0 将 CoreData 保存到 Web 服务器

转载 作者:行者123 更新时间:2023-11-28 06:12:11 24 4
gpt4 key购买 nike

这个问题是关于:Swift Core Data Sync With Web Server .

我已按照上述问题中提到的步骤进行操作,但是我无法将第三步应用于我当前的项目。

我目前有一个名为 Records 的类

class Records {

static let shared = Records()

var records = [Record]()
let context = PersistenceServce.context
let request = NSFetchRequest<Record>(entityName: "Record")

func recordData() -> [Record] {

do {
records = try context.fetch(Record.fetchRequest())
}catch {
print("Error fetching data from CoreData")
}

return records
}
}

这是我在 tableViewController 上显示数据的方式。

func getData() {
records = Records.shared.recordData()
self.tableView.reloadData()
}

我确实知道如何将数据保存到 Web 服务器,如本教程所述:https://www.simplifiedios.net/swift-php-mysql-tutorial/以及检查互联网连接。但是我不确定如何将它应用于涉及多个数据的 CoreData。如果有人可以指导我找到解决方案或解释如何实现这一点,我将非常感激。

最佳答案

您所链接的问题并不是要解释如何与网络服务器通信。它解释了如何将数据存储在核心数据中,并以您知道哪些记录已发送到 Web 服务器的方式对其进行标记/标记。

因此 Predicate 将获取所有尚未发送到 Web 服务器的记录,并允许您在有可用的 Internet 连接时发送它们。

与网络服务器通信可能是一个广泛的话题,取决于您的网络服务器和 API 设置,因此这里无法全面解释。我向您推荐了一些免费的在线资源,它们将帮助您了解 Swift 中的网络。

这是来自上述 StackOverflow 答案的 POST 请求示例

var request = URLRequest(url: URL(string: "http://test.tranzporthub.com/street45/customer_login.php")!)
request.httpMethod = "POST"
let postString = "user_id=chaitanya3191@gmail.com&password=123"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(error)")
return
}

if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")

}

let responseString = String(data: data, encoding: .utf8)
print("responseString = \(responseString)")
}
task.resume()

使用与此类似的代码,您应该能够将数据发送到您的网络服务器,然后您的网络服务器就可以用它做任何它喜欢的事情。

更新:

要将您的参数编码为 JSON,您可以使用以下代码作为指南

var dictionary = [
"username": "Test User",
"password": "Password"
]

if let jsonData = try? JSONSerialization.data(withJSONObject: dictionary, options: []) {
// jsonData is a byte sequence, to view it you would need to convert to string
print(String(bytes: jsonData, encoding: String.Encoding.utf8))
}

哪个会输出:

Optional("{\"username\":\"Test User\",\"password\":\"Password\"}")

注意:您会将其作为数据发送,而不是字符串版本。所以您的代码可能如下所示:

request.httpBody = jsonData

关于swift - 使用 Swift 3.0 将 CoreData 保存到 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199962/

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