LoginSignup
7
7

More than 5 years have passed since last update.

Info.plistやNSUserDefaultsから手軽に値を取り出す拡張

Last updated at Posted at 2016-10-18

Swift歴は浅いのですが、

  • Info.plist
  • NSUserDefaults
  • NSLocalizedString

を簡単に取り出す拡張を書いてみました。

以下の3ファイルをプロジェクトに追加すれば、どこでも使うことができます。

もっと良い書き方があれば、ぜひ教えて下さい。

こんな風に使えます

AppDelegate.swift
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.

        // 「初回起動ですよ」
        UD.setAsDefault("isFirstLaunch", value: true)

        // 開発中なら…
        if InfoPList.get("ShouldResetUserDefaultOnLaunch") as! Bool {
            UD.reset()
        }

        return true
    }
ViewController.swift
...

    recordButton.setTitle(local("Preparing"), forState: .Normal)

...

拡張ファイル

NSObject+InfoPList.swift
class InfoPList: NSObject {
    class func get(label: String!) -> AnyObject?{
        return NSBundle.mainBundle().objectForInfoDictionaryKey(label)
    }
}
NSObject+UD.swift
import Foundation

class UD: NSObject {

    static let ud = NSUserDefaults.standardUserDefaults()

    class func get(key: String!) -> AnyObject? {
        return ud.objectForKey(key)
    }

    class func set(key: String!, value: AnyObject!) {
        ud.setObject(value, forKey: key)
        ud.synchronize()
    }

    class func remove(key: String!) {
        ud.removeObjectForKey(key)
    }

    class func reset() {
        let bundle = NSBundle.mainBundle().bundleIdentifier
        ud.removePersistentDomainForName(bundle!)
    }

    class func setAsDefault(key: String!, value: AnyObject!) {
        ud.registerDefaults([key: value])
    }
}
NSObject+local
import Foundation

func local(key: String!) -> String {
    return NSLocalizedString(key, comment: "")
}

ブログやっています:http://weed.nagoya

7
7
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7