gpt4 book ai didi

swift - 在 Realm 中选择一列并单击链接

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

我不知道如何解决这个问题:有一个包含字段的数据库:

import Foundation
import RealmSwift
import UIKit

class EventsDB: Object {
@objc dynamic var dataMonth = ""
@objc dynamic var dataDay = ""
@objc dynamic var desc = ""
@objc dynamic var link = ""

}

链接列包含一些事件的链接。 SecondController 类有一个 showTutorial 函数:

import Foundation
import UIKit
import RealmSwift
import SafariServices

class SecondController: UIViewController, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!
var linkGive: String?
var dayForSearch: String?
var monthForSearch: String? {
didSet {
guard let monthForSearch = self.monthForSearch else {
return
}

self.realevents = (try! Realm()).objects(EventsDB.self).filter("dataMonth = '\(monthForSearch)' && dataDay = '\(dayForSearch ?? "0")")
}
}

func showTutorial(_ which: Int) {
if let url = URL(string: "\((try! Realm()).objects(EventsDB.self).filter("link"))") {
let config = SFSafariViewController.Configuration()
config.entersReaderIfAvailable = true

let vc = SFSafariViewController(url: url, configuration: config)
present(vc, animated: true)
}
}

override func viewDidLoad() {
super.viewDidLoad()
}

var realevents: Results<EventsDB>?
}

extension SecondController: UITableViewDataSource{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
showTutorial(indexPath.row)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return realevents?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
else {
return UITableViewCell()
}
let realevent = realevents?[indexPath.row]
cell.textLabel?.text = realevent?.desc

return cell
}
}

问:如何选择链接列并让应用程序打开该列中的链接? (我应该在 URL 中输入什么(在 showTutorial 函数中)?)

最佳答案

您的结果数组中已经有了带有链接的对象,因此您所需要做的就是从数组中读取该对象并获取其链接,然后将其转换为 URL,如果其中任何一个失败,则退出。

func showTutorial(_ index: Int) {
guard let url = realevents?[index].link.flatMap { URL(string: $0)} else {
return
}
let config = SFSafariViewController.Configuration()
config.entersReaderIfAvailable = true
let vc = SFSafariViewController(url: url, configuration: config)
present(vc, animated: true)
}
}

关于swift - 在 Realm 中选择一列并单击链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47486932/

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