中年プログラマーの息抜き

カシマルです。 最近、新しい土地へ引っ越しをしたのですが、これを機に何か始めたいなと思ってブログをはじめました。気の向くままに更新していきます。

日当-ヒナタ- swift4 -5- Realmを使ってみる

はじめに

Androidアプリ日当-ヒナタ-のiOS版を作り始めたのでその経過を少しアップします。普段の仕事ではSWIFTを触らないのでとても新鮮な感じと少し不安なとこもあり。。。少し機能を削り、早めのストア公開を目指します。 RealmSwift、オブジェクトのクローズは不要??ひとまず参照を飛ばすだけにしました。

機材

Macbook air Xcode Version 10.1 Apple Swift version 4.2.1
・iphone5c テスト機

RealmHelperを変更して動くとこまで確認しました。

swiftでは必要ないか・・とも思ったのですが、Androidと同じ手順にしたいので設置(ラップしただけ・・ログを出したくなるかもしれませんし。。設計的にもありと思った。)

import RealmSwift

class RealmHelper {
    static let shared: RealmHelper = RealmHelper()
    private init() { }
    
    private let _lock = DispatchQueue(label: "RealmHelper")
    private var _realm: Realm?
    //プロパティでよいのだけど:Androidに合わせて()
    func realm()-> Realm {
        return _lock.sync {
            if _realm == nil { _realm = try!Realm() }
            return _realm!
        }
    }
    
    func begin() {
        _lock.sync {
            if _realm == nil { _realm = try!Realm() }
            _realm!.beginWrite()
        }
    }
    
    func rollback() {
        _lock.sync {
            if _realm == nil { return }
            if _realm!.isInWriteTransaction { _realm!.cancelWrite() }
            _realm = nil
        }
    }
    
    func commit() {
        _lock.sync {
            if _realm == nil { return }
            if _realm!.isInWriteTransaction { try?_realm!.commitWrite() }
            _realm = nil
        }
    }
    
    func close() {
        _lock.sync { _realm = nil }
    }
    
}

    

今日はおわり、つづきは明日。。

簡単なとこは少し動かしてOKでした。(動かないとこはおいおい直す)

ab39

Podfile(参考:#pod setup,#pod init,#pod install,#pod update)

# Uncomment the next line to define a global platform for your project
platform :ios, '10.3'

target 'btr' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  pod 'RealmSwift'
  #pod 'Google-Mobile-Ads-SDK'

end