для магазина, и хотел создать протокол сразу для обоих
                  
                  
                  
                  
                  
                  protocol LocalDatabaseProtocol: AnyObject {
                  
                  
                      func saveProduct<T: Codable>(flower: T)
                  
                  
                      func searchFlower<T: Codable>(id: Int, flower: T) -> T?
                  
                  
                      func getFlowers<T: Codable>() -> [T]
                  
                  
                      func deleteFlower<T: Codable>(id: Int, flower: T)
                  
                  
                  }
                  
                  
                  
                  
                  
                  Типа этого, но мне же их надо же типа их по id получать 
                  
                  
                  
                  
                  
                   func getFlowers() -> [FlowerBasketModel]{
                  
                  
                          let defaults = UserDefaults.standard
                  
                  
                          let myarray = defaults.codableObject(dataType: [FlowerBasketModel.self], key: flowerBaseKey)
                  
                  
                          return myarray
                  
                  
                      }
                  
                  
                  
                  
                  
                      func searchFlower(id: Int) -> FlowerBasketModel? {
                  
                  
                          return getFlowers().first(where: {$0.id == id})
                  
                  
                      }
                  
                  
                  
                  
                  
                  А с «Т» так не получиться, получается мне нужно создать отдельно два класса от «LocalDatabaseProtocol» и в каждом писать так ?
                  
                  
                  
                  
                  
                      func getFlowers<T>(flower: T.Type) -> [Any]? where T : Decodable, T : Encodable {
                  
                  
                          let defaults = UserDefaults.standard
                  
                  
                          let myarray = defaults.codableObject(dataType: [flower], key: flowerBaseKey)
                  
                  
                          return myarray as! [FlowerBasketModel]
                  
                  
                      }
                  
                  
                
Ну насколько я понимаю твою идею тебе надо класс дженерик , который управляет хранением, где T должно быть codable и иметь id.
Обсуждают сегодня