【发布时间】:2017-09-13 14:18:04
【问题描述】:
此问题与: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()
}
我知道如何将数据保存到网络服务器,如本教程所述:https://www.simplifiedios.net/swift-php-mysql-tutorial/ 以及检查互联网连接。但是我不确定如何将它应用于涉及多个数据的 CoreData。 如果有人可以指导我找到解决方案或解释如何实现这一点,我将非常感激。
【问题讨论】:
-
第 3 步说使用
NSPredicate来获取数据。既然您的示例代码表明您已经知道如何获取数据,那么您在这一步遇到了什么问题? -
但我只是不确定将
NSPredicate放在哪里并让应用程序与 Web 服务器通信。这与codewithchris.com/iphone-app-connect-to-mysql-database 教程建议的方式相同吗? -
我没有读过那个教程,所以我不能说。如果您的问题是知道如何使用谓词,您可以将它与您的 fetch 请求一起使用。
NSFetchRequest有一个predicate属性。 -
好的,但这仍然没有告诉我如何使用它与 Web 服务器进行通信。我该怎么处理
let isSynchedPredicate = NSPredicate(format: "synched = %@", false)? -
谓词不应该与与 Web 服务器的通信有任何关系。
NSPredicate可以用作获取的一部分,以仅获取synched为false的条目。一旦你有了这些,将它们发送到网络服务器是一个单独的问题。