Swiftui .已识别(由:)已弃用?
这段代码以前在Xcode11Beta4中工作。在最新的Beta 5中,我在“.identified(by:)”代码块上遇到了一个错误 我查看了XCode11 Beta 5的发行说明,但没有看到任何对被弃用的.identified(by:)的引用Swiftui .已识别(由:)已弃用?,swiftui,xcode11,Swiftui,Xcode11,这段代码以前在Xcode11Beta4中工作。在最新的Beta 5中,我在“.identified(by:)”代码块上遇到了一个错误 我查看了XCode11 Beta 5的发行说明,但没有看到任何对被弃用的.identified(by:)的引用 import SwiftUI import Combine struct Popups: Decodable { let name, truckRating, upcomingLocation, cuisine, truckImage, reg
import SwiftUI
import Combine
struct Popups: Decodable {
let name, truckRating, upcomingLocation, cuisine, truckImage, region,
city, state, currentLocation, numberOfRatings, truckExpense : String
}
class NetworkManager: ObservableObject {
var objectWillChange = PassthroughSubject<NetworkManager, Never>()
var popups = [Popups]() {
didSet {
objectWillChange.send(self)
}
}
init() {
guard let url = URL(string:
"https://www.example.com/db.json") else { return }
URLSession.shared.dataTask(with: url) { (data, _, _) in
guard let data = data else { return }
let popups = try! JSONDecoder().decode([Popups].self, from: data)
DispatchQueue.main.async {
self.popups = popups
}
print("Completed fetching JSON")
}.resume()
}
}
struct ItemsView: View {
@State var networkManager = NetworkManager()
var body: some View {
NavigationView {
List (
networkManager.popups.identified(by: \.name)
) { popup in
ItemsRowView(popup: popup)
}.navigationBarTitle(Text("Pop Ups"))
}
}
}
导入快捷界面
进口联合收割机
结构弹出窗口:可解码{
名称、卡车运输、进站地点、烹饪、卡车运输、地区、,
城市、州、当前位置、numberOfRatings、卡车费用:字符串
}
类网络管理器:ObserveObject{
var objectWillChange=PassthroughSubject()
var popups=[popups](){
迪塞特{
objectWillChange.send(self)
}
}
init(){
guard let url=url(字符串:
"https://www.example.com/db.json)否则{return}
URLSession.shared.dataTask(带:url){(数据,,)在
guard let data=data else{return}
让popups=try!JSONDecoder().decode([popups].self,from:data)
DispatchQueue.main.async{
self.popups=弹出窗口
}
打印(“已完成获取JSON”)
}1.简历()
}
}
结构项视图:视图{
@状态变量networkManager=networkManager()
var body:一些观点{
导航视图{
名单(
networkManager.popups.identified(由:\.名称)
){弹出窗口
ItemsRowView(弹出:弹出)
}.navigationBarTitle(文本(“弹出窗口”))
}
}
}
错误消息指出“类型为“[Popups]”的值没有“已识别”的成员。已识别(由:)
的成员已弃用。正如您正确指出的,Xcode beta版的发行说明中没有提到这一点,但iOS beta版的发行说明中却没有提到这一点,这就是为什么您找不到它的原因。这有点令人困惑,因为与SwiftUI相关的更改分散在iOS 13 beta版、Xcode 11 beta版和macOS Catalina beta版的发行说明中
中不推荐使用收集协议上标识的(由:)方法
支持专用init(:id:selection:rowContent:)和
初始化(:id:content:)初始值设定项。(5297688352029393)
但是,标识(by:)
弃用发生在beta 4中,因此以下内容也适用:
以前Beta中不推荐使用的SwiftUIAPI现在被删除。(52587863)
这个问题在某种程度上是的重复,但在发行说明中提到的弃用位置的混淆值得将其作为一个单独的问题保留。的可能重复