2021-08-01から1ヶ月間の記事一覧

実用的なBundle Extension for Jsonファイルロード

extension Bundle { func load<T: Codable>(from fileName: String) -> T? { guard let url = url(forResource: fileName, withExtension: "json") else { return nil } guard let data = try? Data(contentsOf: url) else { print("File \(fileName) does not exist.") </t:>…

実用的なFileManager Extension for Jsonファイルのセーブ/ロード

enum FileName: String { case pc case gameData } extension FileManager { func load<T: Codable>(from fileName: FileName) -> T? { let url = getDocumentsDirectory().appendingPathComponent(fileName.rawValue) guard let data = try? Data(contentsOf: url) else</t:>…

Optionalプロパティのdecode方法

例えばプロパティvar weapon: Weapon?をdecodeしよう場合、decodeIfPresentは便利です。書き方は下記です: weapon = try container.decodeIfPresent(Weapon.self, forKey: .weapon) 関連記事: cecil-it.hatenadiary.com

リモートブランチをチェックアウトする

Git

格好いい書き方: git checkout -t origin/branch1 ダサい書き方: git checkout -b branch1 origin/branch1

Proerty Wrapper @AppStorage

@AppStorage("name") private var name = "Cecil" こう書くと、name属性はUserDefaultsからデータを読み込む。またname属性を変更するとき、UserDefaultの値も更新する。