Swift: 用UserDefaults保存复杂对象】的更多相关文章

一直木有看过这个细节,用UserDefaults是能不能存复杂一点的对象.大家可能都看到过UserDefaults的一个方法setObject: forKey:,用这个方法存过NSDictionary,NSArray什么的,也存过字符串. 偶然一次直接存了一个继承自JSONModel的实体类,然后就悲剧了.后来查了下苹果的文档: The value parameter can be only property list objects: NSData, NSString,  NSNumber, …
由于NSUserDefaults 不支持保存自定类,保存的对象需要实现NSCoding协议,不过自定的类型就算实现了NSCoding也不可以保存,可以通过以下方法实现: //h文件 #import <Foundation/Foundation.h> @interface People : NSObject<NSCoding> @property(nonatomic,copy)NSString *name; @property(nonatomic,copy)NSString *age…
Tomcat关闭后,重新启动,session中保存的对象为什么还存在各们朋友大家好:         当我关闭Tomcat,重新启动后,session中保存的对象还依然存在,仍然可以使用,不知这是什么原因?                                                               谢谢! ------解决方案--------------------重启后session中的对象可能被重建,但原session肯定别清空了 ------解决方案----…
创建任何桌面应用程序几乎总是需要在本地存储数据,通过Adobe AIR我们有几下面几个选择,一个是我们能够使用内置的 SQLite 数据库支持,对于少量的数据这是大材小用了.另外一个选择是我们通过把数据转换成XML格式,并写入文件中,问题是,如果我们需要一个对象,不得不写一些解码器来转换这个XML.还有另一个选择是在Adobe AIR中,我们序列化一个对象到byte数组,并且写入文件. 好的,我们可以写一个对象到文件中,我们选择那种呢?有两件事情,首先,作为一个byte数组,数组将是非常小的,有…
需要在MySQL中保存Java对象. 说明: 对象必须实现序列化 MySQL中对应字段设置为blob 将Java对象序列化为byte[] public static byte[] obj2byte(Object obj) throws Exception { byte[] ret = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputSt…
Map集合的特点 1.Map集合中保存的都是键值对,键和值是一一对应的 2.一个映射不能包含重复的值 3.每个键最多只能映射到一个值上 Map接口和Collection接口的不同 Map是双列集合的根接口,Collection是单列集合的根接口 1.Map是双列的(是双列集合的根接口),Collection是单列的(是单列集合的根接口) 2.Map的键是唯一的,Collection的子接口Set是唯一的 3.Map集合的数据结构值针对键有效,跟值无关:如:TreeMap:键是用二叉树算法,Has…
Core Data 用于永久化数据,它是基于SQLite数据库的保存一门技术. 那么,在Swift中,它是如何实现的呢? 首先,需要新建一个模板,打开工程中的xcdatamodeld文件,点击“Add Entity” ,这时候,就创建的一个模板.之后,可以修改模板的名称为自己想要的名称.然后,在Attributes里面,点击“+”,添加字段并修改类型. 然后,在代码里面 “import CoreData”.接着,用NSManagedObject来保存对象,它可以转换成任何对象.它的类型是字典.…
迭代器(iterator)是一个可以顺序存取数据集合的对象.其一个典型的API是next方法.该方法获得序列中的下一个值. 迭代器示例 题目:希望编写一个便利的函数,它可以接收任意数量的参数,并为这些值建立一个迭代器. 测试代码好下: var it=values(1,4,1,4,2,1,3,5,6); it.next();//1 it.next();//4 it.next();//1 分析:由于values函数需要接收任意多个参数,这里就需要用到上一节讲到的构建可变参数的函数的方法.然后里面的迭…
1 cookie是以键值对保存在浏览器端,服务器端可以创建.接收.发送 cookie 信息. request可以接收 cookie, response 可以发送 cookie. 1)cookie 可以设置过期时间cookie.setMaxAge 正数,浏览器会将数据保存到硬盘中,如果没有超过过期时间,就可以一直访问.时间单位是秒. 负数,浏览器会将数据保存在内存中,关闭浏览器数据就会回收. 0,清除同名的cookie. 2)Cookie 可以设置有效路径 cookie.setPath(Strin…
报错信息: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [insert into MSG_SMSINFO(MOBILE,CONTENT,CODE,STATUS,CREATEDATE,OPERATIONID,OPERATIONTYPE) values (?,?,?,?,?,?,?)]; SQL state [HY00…