10.Swiftデータアクセス
10.Swiftデータアクセス
NSDataストレージファイルNSString読み込みファイル
NSSearchPathForDirectoriesInDomains(directory: NSSearchPathDirectory, _ domainMask: NSSearchPathDomainMask, _ expandTilde: Bool) -> [String]
NSSearchPathForDirectoriesInDomainsメソッドを呼び出すことで、[String]配列を得ることができます.この配列の最初のデータ[0]は、現在のAppパスです.
NSMutableData.appendData(other: NSData)
NSMutableDataインスタンスを作成し、appendDataメソッドを呼び出して動的にデータを追加できます.JavaやAndroidをやったことがある人は、StringBuilder、StringBufferによく触れるべきです.ここのNSMutableDataはこのような役割に似ていますが、スレッドの安全問題については、現在は調査できません.
NSData.writeToFile(path: String, atomically useAuxiliaryFile: Bool) -> Bool
NSMutableDataはNSDataのサブクラスであるため、NSMutableDataのオブジェクトもwriteToFileを呼び出して自身のコンテンツを1つのファイルとして格納することができる.
NSString :
public convenience init(contentsOfURL url: NSURL, encoding enc: UInt) throws
これはNSStringで
convenience
-便利キーワードで定義された便利な構造方法であり、この方法はNSStringの他のinit方法に依存する.この構成方法により、1つのファイルのurlに基づいて、そのファイルの内容インスタンスをNSStringインスタンスオブジェクトとすることができ、ファイルを読む効果も得られる.class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// App
var sp:[String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true)
// 0,
if(sp.count > 0){
let url = NSURL(fileURLWithPath: "\(sp[0])/data.txt")
// NSMutableData
let data:NSMutableData = NSMutableData()
//
data.appendData("Save you from anything".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!)
//
data.writeToFile(url.path!, atomically: true)
NSLog("\(url)")
// NSString url, NSString
do {
//
let strData:NSString = try NSString(contentsOfURL: url, encoding: NSUTF8StringEncoding)
NSLog("read: \(strData)")
}
catch let error as NSError {
NSLog("\(error.localizedDescription)")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
NSUserDefaultsアクセスデータ
やはりその言葉!Androidをやった人はSharedPreferencesの存在を知っていますが、ここのNSUserDefaultsはSharedPreferencesと同じようにkey-value(キー値ペア)を処理しています.Appの設定オプションなど、少量の情報を保存するのに適しています.
ストレージデータ
NSUserDefaults.setObject(value: AnyObject?, forKey defaultName: String)
読み出しデータNSUserDefaults.objectForKey(defaultName: String) -> AnyObject?
class ViewController: UIViewController {
@IBOutlet weak var mSwitch: UISwitch!
@IBOutlet weak var show: UILabel!
var ud:NSUserDefaults!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.ud = NSUserDefaults.standardUserDefaults()
// key , UISwitch
self.mSwitch.on = self.ud.boolForKey("switch")
self.setShow()
}
// UISwitch
func setShow(){
if(self.mSwitch.on){
self.show.text = " "
}else{
self.show.text = " "
}
}
// UISwitch
@IBAction func switchChanged(sender: AnyObject) {
// key
self.ud.setBool(self.mSwitch.on, forKey: "switch")
self.setShow()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}