1.plist 存储

1.利用沙盒根目录拼接“Documents”字符串

//存储

func saveArray()

{

// 1.获得沙盒根路径,不管是真机还是模拟机,用它是最合适不过了

let home:NSString =NSHomeDirectory()

print(home)

// 2.document路径

let docPath:NSString = home.stringByAppendingPathComponent("Documents")

// 3.新建数据

let data:NSArray = ["jack","ffff"]

//3.文件路径

let filepath:NSString = docPath.stringByAppendingPathComponent("data.plist")

//4.存储数据

data.writeToFile(filepathasString, atomically:true)

}

//读取

@IBActionfunc read() {

//1.获得沙盒根路径

let home:NSString =NSHomeDirectory()

//2.document路径

let doctPath:NSString = home.stringByAppendingPathComponent("Document")

//3.文件路径

let filepath:NSString = doctPath.stringByAppendingPathComponent("data.plist")

//4.读取数据

let data:NSArray? =NSArray(contentsOfFile: filepathasString)

print("%@",data)

}

// 不建议采用,因为新版本的操作系统可能会修改目录名

2.利用NSSearchPathForDirectoriesInDomains获取路径

let array:
NSArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.UserDomainMask,false)

//2.document路径

let documents:NSString = array.objectAtIndex(0)as!NSString

print(documents)

2.偏好设置

//存储

@IBActionfunc save()

{

// 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Library/Preferences)

let defaults:NSUserDefaults =
NSUserDefaults.standardUserDefaults()

print(NSHomeDirectory())//能看到手机根目录

// 2.存储数据

defaults.setObject("mj", forKey:"account")

defaults.setObject("123", forKey:"pwd")

defaults.setInteger(10, forKey:"age")

defaults.setBool(true, forKey:"auto_login")

// 3.立刻同步

defaults.synchronize()

}

//读取

@IBActionfunc read()

{

let defaults:NSUserDefaults =
NSUserDefaults.standardUserDefaults()

let account = defaults.objectForKey("account")

let autoLogin:Bool = defaults.boolForKey("auto_login")

print("%@ -- %d", account, autoLogin)

}

  • 注意:UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题,可以通过调用synchornize方法强制写入[defaults
    synchornize];

3.NSKeyedArchiver归档(NSCoding)

class MJStudent:
NSObject,NSCoding

{

var no:
NSString!

var height:
Double!

var age:
Int32!

/**

*  将某个对象写入文件时会调用

*  在这个方法中说清楚哪些属性需要存储

*/

func encodeWithCoder(aCoder:
NSCoder)

{

print(NSHomeDirectory())

aCoder.encodeObject(self.no, forKey:
"no")

aCoder.encodeInt(self.age, forKey:
"age")

aCoder.encodeDouble(self.height, forKey:
"height")

}

/**

*  从文件中解析对象时会调用

*  在这个方法中说清楚哪些属性需要存储

*/

required
init?(coder aDecoder:
NSCoder)

{

self.no = aDecoder.decodeObjectForKey("no")
as! String

self.age = aDecoder.decodeIntForKey("age")

self.height = aDecoder.decodeDoubleForKey("height")

}

}


class ViewController:
UIViewController {

//存储

@IBAction
func save()

{

//1.新的模型对象

let stu:
MJStudent = MJStudent(coder: aDecoder: NSCoder)

stu.no =
"42343254"

stu.age =

stu.height =
1.55

// 2.归档模型对象

// 2.1.获得Documents的全路径

var doc:
NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomainMask.UserDomainMask,
true).last

// 2.2.获得文件的全路径

var path:
NSString = doc.stringByAppendingPathComponent("stu.data")

// 2.3.将对象归档

NSKeyedArchiver.archiveRootObject(stu, toFile: path
as String)

}

//读取

@IBAction
func read()

{

// 1.获得Documents的全路径

var doc:
NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomainMask.UserDomainMask,
true).last!

// 2.获得文件的全路径

var path:
NSString = doc.stringByAppendingPathComponent("stu.data")

// 3.从文件中读取MJStudent对象

let stu:
MJStudent = NSKeyedUnarchiver.unarchiveObjectWithFile(path)

print("%@ %d %f", stu.no, stu.age,
stu.height)

}

}

swift 数据存储的更多相关文章

  1. IOS(swift)-数据存储 · 用NSUserDefaults存储配置信息

    1.用NSUserDefaults存储配置信息 注:本次使用NSUserDefaults存储信息是在不考虑安全问题的前提下.分两种情况:1.如果是密码用户名等敏感信息,请使用Keychain存储用户敏 ...

  2. iOS - Swift NSUserDefaults 数据存储

    前言 public class NSUserDefaults : NSObject 用来保存应用程序设置和属性.用户保存的数据.用户再次打开程序或开机后这些数据仍然存在.如果往 userDefault ...

  3. Swift之沙盒与数据存储

    应用沙盒结构分析 1.应用程序包:包含了所有的资源文件和可执行文件 2.Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录 3.tmp:保存应用运行时所需要的 ...

  4. 最全的iOS数据存储方法

    目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...

  5. swift对象存储

    swift对象存储 简介 OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.对象存储,用于 ...

  6. swift对象存储安装

    对象存储服务概览 OpenStack对象存储是一个多租户的对象存储系统,它支持大规模扩展,可以以低成本来管理大型的非结构化数据,通过RESTful HTTP 应用程序接口. 它包含下列组件: 代理服务 ...

  7. 16_Android的数据存储_ SharedPreference、XML和JSON

    1. Android读写首选项 1.1 SharedPreferences SharedPreferences 是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对数据,通常 ...

  8. Kooboo CMS技术文档之三:切换数据存储方式

    切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...

  9. Android之数据存储的五种方法

    1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...

随机推荐

  1. mongoDB简单介绍及安装

    近期一段时间对mongoDB进行了简单的学习,从它是什么?干什么?怎么用?优缺点?这一系列的疑问到如今可以简单运用.我想须要对其进行简单的总结和概述.那么这一篇就从最基础的開始,对其主要的概念和安装来 ...

  2. AFNetworking 取消请求

    取消单个操作: AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request] ...

  3. QT就是别人好心帮你做一些枯燥,并且很重复的代码编写工作,让你更好的把精力投入到你界面的逻辑和功能的实现的功能库(否则写了上万行代码了,才写出个BUG一大堆的毛坯)

    好了,现在开始记录我学习QT的学习历程 . 本人也不是计算机专业出来的,自学了一点,但还是不好找工作,于是参加了培训,虽然感觉没多学到什么 编程的学习生涯就是不断的看别人的源码,然后自己参考着写写自己 ...

  4. 你如何理解 HTML5 的 section?会在什么场景使用?为什么这些场景使用 section 而不是 div?

    section元素表示文档或应用的一个部分.所谓“部分”,这里是指按照主题分组的内容区域,通常会带有标题.[也就是每个section对应不同的主题.注意是内容本身的主题,而不是其他人为设定的划分标准. ...

  5. es8 --- 新特性

    ES8尚未发布(2017年1月),下面是它已经完成起草的一些特性: Object.values() Object.entries() padStart() padEnd() Object.getOwn ...

  6. Day5费用流

    算法 zkw费用流:多路增广,增光D[y]=D[i]+c的边 无源汇上下界最小费用可行流 每次强行增加下界的流量 类似网络流,拆边 原边的费用为c,拆出来的边费用为0 负边和负圈 直接应用 SDOI2 ...

  7. springboot扫描通用的依赖模块

    将实际使用类的启动类改为如下形式启动: public class OrderApplication { public static void main(String[] args) { Object[ ...

  8. 搭建Spark源码研读和代码调试的开发环境

    转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...

  9. cocos2d-x-lua基础系列教程六(lua-table增删改查)

    lua-table库 1.插入 table.insert () --假设没有设定位置.默认last位置 样例: myTable = { 1, 2, 3 } myTable.insert(myTable ...

  10. ORA-01031: 权限不足

    1.错误描写叙述 ORA-01031: 权限不足 2.错误原因 SQL> create user yhd identified by scott account unlock; create u ...