gpt4 book ai didi

ios - CloudKit 执行

转载 作者:行者123 更新时间:2023-11-29 11:50:50 25 4
gpt4 key购买 nike

我的应用程序中存在 CloudKit 问题。最初加载 View 时,数据会完美加载。但是当我“拉动刷新”时,我得到一个“ fatal error :索引超出范围”。奇怪的是代码没有区别(至少对我而言)。当我拉动刷新时,它甚至不运行“执行”(不打印“B”)。调试器未显示任何错误。

你有线索吗?

提前致谢!

妮可

viewDidLoad:

loadCloudData()

handlePullToRefresh:

func handlePullToRefresh() {
loadCloudData()
}

loadCloudData:

func loadCloudData() {
DispatchQueue.main.async {
self.showMessage(titleText: NSLocalizedString("Loading ...", comment: "SwiftMessage Loading Title"), text: NSLocalizedString("Loading PixelCodes from Cloud", comment: "SwiftMessage Loading Title"), backgroundColor: UIColor.tileYellow(), textColor: UIColor.darkGray, image: #imageLiteral(resourceName: "cloud"))
}

dataCloud = [CKRecord]()
let query = CKQuery(recordType: PixelCodeType.recordType, predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil))
query.sortDescriptors = [NSSortDescriptor(key: "title", ascending: true)]

print("A")

databasePublic.perform(query, inZoneWith: nil) { (results:[CKRecord]?, error:Error?) in
print("B")
if error != nil {
print("PixelCode from Cloud not Loaded!\n\(error!.localizedDescription)")
self.couldLoadCloadData = false
DispatchQueue.main.async {
SwiftMessages.hideAll()

if self.refreshControl != nil {
if self.refreshControl!.isRefreshing {
self.refreshControl!.endRefreshing()
}
}

//"Cloud" active
self.segmentedControl.setEnabled(true, forSegmentAt: 1)
}
self.handleError(title: NSLocalizedString("Error!", comment: "SwiftMessage error title"), text: error!.localizedDescription, errorTitle: "Cloud Loading Error:loadCloudData()", error: error)
} else {
if let data = results {
print("pixelCodes updated")
self.dataCloud = data

if results!.isEmpty {
self.couldLoadCloadData = true
self.isCloudDataLoaded = false
} else {
self.couldLoadCloadData = true
self.isCloudDataLoaded = true
}

self.uploadTimes()

DispatchQueue.main.async {
if self.refreshControl != nil {
if self.refreshControl!.isRefreshing {
self.refreshControl!.endRefreshing()
}
}
SwiftMessages.hideAll()

//"Cloud" active
self.segmentedControl.setEnabled(true, forSegmentAt: 1)

self.tableView.reloadData()
}
}
}
}
}

最佳答案

您的 loadCloudData 函数所做的第一件事是将 dataCloud 数组设置为空数组,但您不会调用 reloadData tableview 所以数组中的项目数和 tableview thinks 在数组中的项目数是不同的。

您应该在清除数组或不清除数组后调用 reloadData

关于ios - CloudKit 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41240435/

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