0
私は3のカウントを期待していましたが0を返しました。私は9時間まっすぐにコーディングしています。値型の変数を格納していないHashable構造体Array <class objects>
私はスウィフトの理解に穴があるかもしれません。どんな助けもありがたい。
struct Service {
enum Category: String {
case hospital, pharmacy, surgery
var title: String {
switch self {
case .hospital:
return "Hospitals"
case .pharmacy:
return "Pharmacies"
case .surgery:
return "Surgeries"
}
}
}
let title: String
let category: Category
var fetched: [Annotation] = []
}
extension Service {
init(category: Category) {
self.title = category.title
self.category = category
}
}
extension Service: Equatable {
static func ==(lhs: Service, rhs: Service) -> Bool {
return lhs.category == rhs.category
}
}
extension Service: Hashable {
var hashValue: Int {
return category.hashValue
}
}
class Annotation: NSObject {
let name: String
init(name: String) {
self.name = name
}
}
class Services {
var currentService: Service {
didSet {
if currentService != oldValue {
if let previousService = previousServices[currentService.category.rawValue] {
currentService = previousService
} else {
previousServices[currentService.category.rawValue] = currentService
}
}
}
}
private var previousServices: [String : Service] = [:]
init() {
currentService = Service(category: .hospital)
}
}
let services = Services()
services.currentService.fetched = [Annotation(name: "1"),Annotation(name: "2"),Annotation(name: "3")]
services.currentService = Service(category: .surgery)
services.currentService.fetched = [Annotation(name: "4"),Annotation(name: "5")]
services.currentService = Service(category: .hospital)
print(services.currentService.fetched.count)
新しい '' 'サービス(カテゴリ:.hospital)' ''をインスタンス化しています。現在のサービスを新しいサービスにしたいということです。サービスを切り替える場合は、別の方法で行う必要があります。 – iWheelBuy