Swift 知識(shí)點(diǎn)總結(jié)

1.單粒

// 創(chuàng)建單粒類
class SingletonClass2 {
    static let shared = SingletonClass2()
    private init(){}
}

// 打印對(duì)象的內(nèi)存地址
let address = Unmanaged.passUnretained(SingletonClass2.shared).toOpaque()
let address1 = Unmanaged.passUnretained(SingletonClass2.shared).toOpaque()
let address2 = Unmanaged.passUnretained(SingletonClass2.shared).toOpaque()
let address3 = Unmanaged.passUnretained(SingletonClass2.shared).toOpaque()

print(address)
print(address1)
print(address2)
print(address3)
/*
0x00006000024595f0
0x00006000024595f0
0x00006000024595f0
0x00006000024595f0
*/

2.存儲(chǔ)對(duì)象(歸檔/解歸檔)

工具類 ArchiveTool.swift

//  歸檔和解歸檔工具類

import UIKit
import KakaJSON

class ArchiveTool {
    /// 文件夾名稱
    static let kArchive = "archive"
    
    
    /// 存儲(chǔ)歸檔
    ///
    /// - Parameter object: 要?dú)w檔的對(duì)象
    /// - Returns: YES: 歸檔成功  NO: 歸檔失敗
    static func saveObject(object: Any) {
        // 存放的文件路徑
        let path = getPathWithPrefix(classType: object)
       
        // 保存
        write(object, to: path)
        
    }
    
    /// 刪除歸檔
    ///
    /// - Parameter classType: 要?jiǎng)h除歸檔的類對(duì)象
    /// - Returns: true: 刪除成功  false: 刪除失敗
    static func deleteArchiveClass(classType: Any) -> Bool {
        // 獲取類名
        let className = String(describing: type(of: classType))
        if className.isEmpty { // 沒有值
            return false
        }
        let tempCaches = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last
        guard let caches = tempCaches  else { return true }
        let filePathFolder = caches + "/" + kArchive
        if !FileManager.default.fileExists(atPath: filePathFolder) { // 不存在
            return true
        }
        let fileName = filePathFolder + "/" + className + ".archive"
        do {
            try FileManager.default.removeItem(atPath: fileName)
            return true
        } catch  {
            print("\(classType)--刪除歸檔失敗")
            return false
        }
        
    }
    
    /// 獲取類名
    ///
    /// - Parameter classType: 類對(duì)象
    /// - Returns: 類名
    static func getClassName(classType: Any) -> String {
        let className = String(describing: type(of: classType))
        return className
    }
    
    
    /// 存放的文件路徑
    ///
    /// - Parameter prefix: 文件名稱
    /// - Returns: 文件的路徑
    static func getPathWithPrefix(classType: Any) -> String {
        // 獲取類名
        let className = String(describing: type(of: classType))
        if className.isEmpty { // 沒有值
            return ""
        }
        let tempCaches = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last
        guard let caches = tempCaches  else { return "" }
        let filePathFolder = caches + "/" + kArchive
        
        if !FileManager.default.fileExists(atPath: filePathFolder) { // 不存在
            do {
                try FileManager.default.createDirectory(atPath: filePathFolder, withIntermediateDirectories: true, attributes: nil)
            }catch {
                print("存放的文件路徑 error", error)
                
                return ""
            }
        }
        return filePathFolder + "/" + className + ".archive"
    }
    
}

使用示例

// 創(chuàng)建結(jié)構(gòu)體 繼承Convertible
struct Person: Convertible {
    var name: String = "淺宇洛"
    var age: Int = 26
}

// 存儲(chǔ)Person對(duì)象
ArchiveTool.saveObject(object: Person())

// 讀取Person對(duì)象
let model = read(Person.self, from: ArchiveTool.getPathWithPrefix(classType: Person()))
print("測(cè)試模型", model ?? AllModel())
// 測(cè)試模型 Person(name: "淺宇洛", age: 26)

// 刪除歸檔的Person對(duì)象
let result = ArchiveTool.deleteArchiveClass(classType: Person())
print(result)
// true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容