More Related Content
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
The Bash in Tokyo : AppKitとUIKit PPTX
PPTX
Similar to 独自Documentクラス
PDF
PDF
最近の業務やAndroid関連のインプットと振り返り PPTX
Document based application PDF
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題 PDF
Refactoring point of Kotlin application PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ More from 幸雄 村上
PDF
PDF
PDF
PDF
PDF
PDF
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど) PDF
PDF
PDF
PDF
PPTX
PPTX
PPTX
PPTX
IBM Watson Services for Core ML PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
Cloud kitを使った日記アプリで写真をどう扱うか 独自Documentクラス
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
• iOS 5からUIDocumentクラスが用意されたが、少々、オ
ーバースペック。
• 発表者は、以前から、独自のDocumentクラスを用意して
いた。
- 9.
- 10.
class Document {
varversion: String
private var _uniqueIdentifier: String
var uniqueIdentifier: String {
return _uniqueIdentifier
}
static let sharedInstance: Document = {
let instance = Document()
return instance
}()
init() {
let infoDictionary = Bundle.main.infoDictionary! as Dictionary
self.version = infoDictionary["CFBundleShortVersionString"]! as! String
self._uniqueIdentifier = ""
}
deinit {
}
func load() {
loadDefaults()
}
func save() {
updateDefaults()
}
private func clearDefaults() {
let userDefaults = UserDefaults.standard
if userDefaults.object(forKey: "version") != nil {
userDefaults.removeObject(forKey: "version")
}
if userDefaults.object(forKey: "uniqueIdentifier") != nil {
userDefaults.removeObject(forKey: "uniqueIdentifier")
}
}
private func updateDefaults() {
let userDefaults = UserDefaults.standard
var versionString: String = ""
if userDefaults.object(forKey: "version") != nil {
versionString = userDefaults.object(forKey: "version") as! String
}
if versionString.compare(self.version) != .orderedSame {
userDefaults.setValue(self.version, forKey: "version")
userDefaults.synchronize()
}
var uniqueIdentifier: String = ""
if userDefaults.object(forKey: "uniqueIdentifier") != nil {
uniqueIdentifier = userDefaults.object(forKey: "uniqueIdentifier") as! String
}
if uniqueIdentifier.compare(self.uniqueIdentifier) != .orderedSame {
userDefaults.setValue(self.uniqueIdentifier, forKey: "uniqueIdentifier")
userDefaults.synchronize()
}
}
private func loadDefaults() {
let userDefaults = UserDefaults.standard
var versionString: String = ""
if userDefaults.object(forKey: "version") != nil {
versionString = userDefaults.object(forKey: "version") as! String
}
if versionString.compare(self.version) != .orderedSame {
/* バージョン不一致対応 */
clearDefaults()
_uniqueIdentifier = UUID.init().uuidString
}
else {
/* 読み出し */
if userDefaults.object(forKey: "uniqueIdentifier") != nil {
_uniqueIdentifier = userDefaults.object(forKey: "uniqueIdentifier") as! String
}
}
}
private func modelDir() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
if paths.count < 1 {
return ""
}
var path = paths[0]
path = path.appending(".model")
return path
}
private func modelPath() -> String {
let path = modelDir().appending("/model.dat")
return path;
}
}
- 11.
- 12.