数据存储小结
数据存储小结数据存储小结首选项设置存储NSUserDefaults 以及通过它控制的 SettingBundle NSUserDefaults 用来保存一些设置,他会自动写到何时的位置。NSUbiquitousKeyValueStore 多平台同步设置,限制是大小 64k,开启 entitlement,唯一 Apple ID(还要考虑无法连接到 iCloud 网络时的情形)文件存储一.目录描述/AppName.app bundle 目录,包括程序本身。往里面些东西会导致签名改变和重启程序。初始同步后 iTunes 不备份此目录。/Documents/ 存储用户文档和程序数据。通过文件共享可以使其可见。iTunes 备份之。/Documents/Inbox 其他程序要求本程序打开的文档。可读删,不可增加修改。要改变可以先移出来。iTunes 备份之。/Library/ 非用户数据文件存储的根目录。用其中标准或自定义的文件夹备份不被用户可见的数据。不应用这个目录存储用户数据。iTunes 备份之。Library/Application Support/ 为用户创建管理的资源和数据文件。用这个目录存储程序状态信息,下载的文件甚至用户创建但同意你管理的数据。自动保存文件。/Library/Caches/ 用来存储缓存文件或者程序可以简单重建的文件的目录。天地棋牌 http:/www.dadiqipaigw.cn/tmp/ 临时文件目录,可能被系统删除,不应期望始终存在。不被 iTunes 备份。得到目录地址URLsForDirectory:inDomains: method 返回 NSURL 形式的目录地址NSSearchPathForDirectoriesInDomains 返回字符串形式的目录地址NSHomeDirectory 返回程序根目录NSTemporaryDirectory 返回临时文件目录相关变量定义NSSearchPathDirectoryenum NSApplicationDirectory = 1,/Supported applications (/Applications)NSDemoApplicationDirectory,/Unsupported applications and demonstration versionsNSDeveloperApplicationDirectory,/Developer applications (/Developer/Applications)NSAdminApplicationDirectory,/System and network administration applicationsNSLibraryDirectory,/Various user-visible documentation, support, and configuration files (/Library)NSDeveloperDirectory,/Developer resources (/Developer)NSUserDirectory,/User home directories (/Users)NSDocumentationDirectory,/NSDocumentDirectory,/NSCoreServiceDirectory,/Location of core services (System/Library/CoreServices)NSAutosavedInformationDirectory = 11,/Location of users autosaved documents Library/Autosave InformationNSDesktopDirectory = 12,/NSCachesDirectory = 13,/Location of discardable cache files (Library/Caches)NSApplicationSupportDirectory = 14,/Location of application support files (Library/Application Support)NSDownloadsDirectory = 15,/NSInputMethodsDirectory = 16,/NSMoviesDirectory = 17,/NSMusicDirectory = 18,/NSPicturesDirectory = 19,/NSPrinterDescriptionDirectory = 20,/NSSharedPublicDirectory = 21,/NSPreferencePanesDirectory = 22,/NSItemReplacementDirectory = 99,/NSAllApplicationsDirectory = 100,/NSAllLibrariesDirectory = 101/;typedef NSUInteger NSSearchPathDirectory;enum NSUserDomainMask = 1,/用户主目录中NSLocalDomainMask = 2,/当前机器中NSNetworkDomainMask = 4,/网络中可见的主机NSSystemDomainMask = 8,/系统目录,不可修改(/System)NSAllDomainsMask = 0x0ffff,/全部;typedef NSUInteger NSSearchPathDomainMask;二.存储方式(一).属性列表(plist)array,dictionary,data,string,NSNumber,NSDate 等 ns 对象直接写入 plist 文件中保存.(二).归档文件实现 NSCoding 协议(NSCopy 也要实现?没实现也成功了。)编解码类说明NSKeyedArchiver创建- (id)initForWritingWithMutableData:(NSMutableData *)data / 归档数据写到data 中 638 棋牌 http:/www.rodlg.com归档数据+ (NSData *)archivedDataWithRootObject:(id)rootObject / 归档到 data 中+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path / 归档到文件中- (void)finishEncoding / 调用后不能继续归档数据,归档结束必须调用(公共方法归档的不用理这个了)outputFormat / data 编码方式,xml 还是二进制setOutputFormat:编码数据 encodeBool:forKey:encodeBytes:length:forKey:encodeConditionalObject:forKey:encodeDouble:forKey:encodeFloat:forKey:encodeInt:forKey:encodeInt32:forKey:encodeInt64:forKey:encodeObject:forKey:代理委托delegatesetDelegate:archiver:didEncodeObject:archiverDidFinish:archiver:willEncodeObject:archiverWillFinish:archiver:willReplaceObject:withObject:类和类名+ setClassName:forClass:+ classNameForClass:setClassName:forClass:classNameForClass:异常extern NSString *NSInvalidArchiveOperationException;NSKeyedUnarchiver创建initForReadingWithData:取消归档+ (id)unarchiveObjectWithData:(NSData *)data / 从 data 中得到实现归档的对象+ (id)unarchiveObjectWithFile:(NSString *)path / 从文件中得到解码数据- (BOOL)containsValueForKey:(NSString *)key / 是否包含给定的 key 编码对象decodeBoolForKey:decodeBytesForKey:returnedLength:decodeDoubleForKey:decodeFloatForKey:decodeIntForKey:decodeInt32ForKey:decodeInt64ForKey:decodeObjectForKey:- (void)finishDecoding / 通知委托解码结束,调用后不能再继续解码代理委托delegatesetDelegate:unarchiver:cannotDecodeObjectOfClassName:originalClasses:unarchiver:didDecodeObject:unarchiver:willReplaceObject:withObject:Finishing DecodingunarchiverDidFinish:unarchiverWillFinish:类名+ setClass:forClassName:+ classForClassName:setClass:forClassName:classForClassName:异常NSString *NSInvalidUnarchiveOperationException;(三).CoreDataxcdatamodeld 文件中 Entity 的三种属性:Attributes: 对应的 Obj-c 类的接口变量.Relationships: Entity 之间的关系,to-one,or to-many.Fetched properties: 对上面 Relationship 的过滤?参考参考 1对应文件存储形式COREDATA_EXTERN NSString * const NSSQLiteStoreType NS_AVAILABLE(10_4, 3_0);/ SQLite 形式存储COREDATA_EXTERN NSString * const NSXMLStoreType NS_AVAILABLE(10_4, NA);/ ios 不可用COREDATA_EXTERN NSString * const NSBinaryStoreType NS_AVAILABLE(10_4, 3_0);/ 二进制形式存储COREDATA_EXTERN NSString * const NSInMemoryStoreType NS_AVAILABLE(10_4, 3_0);/ 内存中基本使用过程(括号中参考 sql 术语)NSManagedObjectModel 对象 获取工程中 xcdatamodeld 文件设置的模版(就是你的数据库有哪些表,表中有哪些字段的一种说明)NSPersistentStoreCoordinator 对象 根据上面的模版生成或对应的一个文件(数据库文件,具体的数据文件)NSManagedObjectContext 对象 上面文件的操作的空间,增删改查都通过这里进行NSEntityDescription 对象 得到上面 context 中的一个表NSFetchRequest 对象 对上面表的一些具体