10.Swift 数据存取
2015-10-07 16:22
447 查看
10.Swift 数据存取
Swift 数据存取NSData存储文件 NSString读取文件
NSUserDefaults存取数据
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去将自身的内容存储为一个文件。
NSString :
public convenience init(contentsOfURL url: NSURL, encoding enc: UInt) throws
这是NSString中用
convenience- 便利 关键字定义的一个便利构造方法,这个方法是要依赖于NSString其他的init方法。通过这个构造方法可以根据一个文件的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. } }
相关文章推荐
- 我是运营,我没有假期
- Apple Swift学习教程
- Tomcat端口被占用解决方法(不用重启)
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- 修复mysql数据库
- SQLServer 数据导入导出的几种方法小结
- MySQL数据备份之mysqldump的使用详解
- 超大数据量存储常用数据库分表分库算法总结
- C#实现窗体间传递数据实例
- SQL Server误区30日谈 第18天 有关FileStream的存储,垃圾回收以及其它
- 给你的数据库文件减肥
- Oracle数据更改后出错的解决方法
- C#将Sql数据保存到Excel文件中的方法
- C++实现图的邻接表存储和广度优先遍历实例分析
- MFC实现在文件尾追加数据的方法
- 把excel表格里的数据导入sql数据库的两种方法
- Wireshark系列之6 数据流追踪