mirror of
https://github.com/zhigang1992/Kingfisher.git
synced 2026-04-29 04:25:36 +08:00
Added diskStoreWriteOptions & updated diskStorage
This commit is contained in:
@@ -122,11 +122,13 @@ public enum DiskStorage {
|
||||
/// - key: The key to which the `value` will be stored. If there is already a value under the key,
|
||||
/// the old value will be overwritten by `value`.
|
||||
/// - expiration: The expiration policy used by this store action.
|
||||
/// - writeOptions: Data writing options used the new files.
|
||||
/// - Throws: An error during converting the value to a data format or during writing it to disk.
|
||||
public func store(
|
||||
value: T,
|
||||
forKey key: String,
|
||||
expiration: StorageExpiration? = nil) throws
|
||||
expiration: StorageExpiration? = nil,
|
||||
writeOptions: Data.WritingOptions = []) throws
|
||||
{
|
||||
guard storageReady else {
|
||||
throw KingfisherError.cacheError(reason: .diskStorageIsNotReady(cacheURL: directoryURL))
|
||||
@@ -145,7 +147,7 @@ public enum DiskStorage {
|
||||
|
||||
let fileURL = cacheFileURL(forKey: key)
|
||||
do {
|
||||
try data.write(to: fileURL)
|
||||
try data.write(to: fileURL, options: writeOptions)
|
||||
} catch {
|
||||
throw KingfisherError.cacheError(
|
||||
reason: .cannotCreateCacheFile(fileURL: fileURL, key: key, data: data, error: error)
|
||||
|
||||
@@ -323,6 +323,7 @@ open class ImageCache {
|
||||
processorIdentifier: identifier,
|
||||
callbackQueue: callbackQueue,
|
||||
expiration: options.diskCacheExpiration,
|
||||
writeOptions: options.diskStoreWriteOptions,
|
||||
completionHandler: completionHandler)
|
||||
} else {
|
||||
guard let completionHandler = completionHandler else { return }
|
||||
@@ -408,12 +409,13 @@ open class ImageCache {
|
||||
processorIdentifier identifier: String = "",
|
||||
callbackQueue: CallbackQueue = .untouch,
|
||||
expiration: StorageExpiration? = nil,
|
||||
writeOptions: Data.WritingOptions = [],
|
||||
completionHandler: ((CacheStoreResult) -> Void)? = nil)
|
||||
{
|
||||
let computedKey = key.computedKey(with: identifier)
|
||||
let result: CacheStoreResult
|
||||
do {
|
||||
try self.diskStorage.store(value: data, forKey: computedKey, expiration: expiration)
|
||||
try self.diskStorage.store(value: data, forKey: computedKey, expiration: expiration, writeOptions: writeOptions)
|
||||
result = CacheStoreResult(memoryCacheResult: .success(()), diskCacheResult: .success(()))
|
||||
} catch {
|
||||
let diskError: KingfisherError
|
||||
|
||||
@@ -293,6 +293,7 @@ public struct KingfisherParsedOptionsInfo {
|
||||
public var onFailureImage: Optional<KFCrossPlatformImage?> = .none
|
||||
public var alsoPrefetchToMemory = false
|
||||
public var loadDiskFileSynchronously = false
|
||||
public var diskStoreWriteOptions: Data.WritingOptions = []
|
||||
public var memoryCacheExpiration: StorageExpiration? = nil
|
||||
public var memoryCacheAccessExtendingExpiration: ExpirationExtending = .cacheTime
|
||||
public var diskCacheExpiration: StorageExpiration? = nil
|
||||
|
||||
Reference in New Issue
Block a user