gpt4 book ai didi

swift - 无法使用 rxcoca 生成 TableView

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

我有一个应用程序,可以显示当前天气。数据通过 Alamofire 从 forecast.io 下载。结果形成一个带有预测的表格。我使用了简单的 tableviewdelegate 和 tableviewDatasource,一切正常。但现在我想学习一些响应式(Reactive)的,使用 rxswift 和 rxcocoa。经过一些谷歌搜索和 raywanderlich 的教程:我将代码更改为:

var week = Variable<[DailyWeather]>([])

override func viewDidLoad() {
super.viewDidLoad()

week.asObservable().subscribe { (e) in
self.generateTable()
}.addDisposableTo(disposeBag)

// tableView.delegate = self
// tableView.dataSource = self
tableView.backgroundColor = UIColor(red:0.81, green:0.81, blue:0.81, alpha:1)
refreshControl.tintColor = UIColor(red:1, green:1, blue:1, alpha:1)
self.tableView.addSubview(self.refreshControl)
manager.delegate = self
manager.requestWhenInUseAuthorization()
updateLocation()


}

func downloadData(_ completion: @escaping DownloadComplete) {

var weatherURL: String {
if pre == "ru" {
return("\(BASE_URL)\(API_KEY)/\(latitudeNew),\(longitudeNew)?units=si&lang=ru")
} else {
return("\(BASE_URL)\(API_KEY)/\(latitudeNew),\(longitudeNew)?units=si")
}
}

print(weatherURL)

if let url = URL(string: weatherURL) {
let request = Alamofire.request(url)

request.validate().responseJSON { response in
switch response.result {
case .success:

self.week.value = []

self.weekly = []
if let data = response.result.value as! [String: AnyObject]! {

self.weatherDict = data["currently"] as! [String: AnyObject]!
self.currentDict = CurrentWeather(weatherDictionary: self.weatherDict)

self.dailyArray = data["daily"]?["data"] as! [[String: AnyObject]]!
for dailyWeather in self.dailyArray {
let daily = DailyWeather(dailyWeatherDict: dailyWeather)
self.weekly.append(daily)
}
for x in 0...7 {
if x == 0 {
} else {

self.week.value.append(self.weekly[x])

}
}
completion()
}

case .failure(let error):
self.showAlert("You are offline", message: "Enable network connection and try again")
print("Alamofire error: \(error)")
}

}

}
}


func generateTable() {

week.asObservable().bindTo(tableView.rx.items(cellIdentifier: "WeatherViewCell", cellType: WeatherViewCell.self)) { (index, weather, cell) in
cell.configureCell(daily: weather, index: index)
}.addDisposableTo(disposeBag)

}

但是我收到这个 fatal error :

fatal error: Failure converting from Optional(<UIView: 0x7facad60f620; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x60800002e520>>) to UITableViewDataSource: file /Users/ruslansabirov/Desktop/swift/Havo4/Pods/RxCocoa/RxCocoa/RxCocoa.swift, line 146
(lldb)

请帮忙,我做错了什么?

最佳答案

检查 TableView 委托(delegate)和数据源方法。如果在您的代码中设置了 tableview 委托(delegate),那么您必须在使用 RXSwift 时实现 tableview 的委托(delegate)方法,否则应用程序会崩溃。

关于swift - 无法使用 rxcoca 生成 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42203613/

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