Вы передаете другие переменные экземпляра, diskConfig
и memoryConfig
инициализатору cache
, но, поскольку все свойства инициализируются одновременно, это невозможно.Однако вы можете пометить cache
как lazy
, что означает, что оно будет оцениваться только при первом обращении к нему.Первый доступ может произойти только после того, как включающий экземпляр был уже инициализирован, поэтому можно безопасно использовать другую переменную экземпляра из инициализатора свойства lazy
.
let diskConfig = DiskConfig(name: "ReadGirl.JSONCache")
let memoryConfig = MemoryConfig(expiry: .never, countLimit: 10, totalCostLimit: 10)
fileprivate lazy var cache = try? Storage(
diskConfig: diskConfig,
memoryConfig: memoryConfig,
transformer: TransformerFactory.forData()
)
Другое возможное решение, если вам не нужнодоступ к diskConfig
или memoryConfig
извне вашей переменной cache
будет означать непосредственную передачу их в инициализатор вместо сохранения ее в качестве переменной экземпляра.
fileprivate let cache = try? Storage(
diskConfig: DiskConfig(name: "ReadGirl.JSONCache"),
memoryConfig: MemoryConfig(expiry: .never, countLimit: 10, totalCostLimit: 10),
transformer: TransformerFactory.forData()
)