公海赌船网址ios系统非允许看其他应用的动沙盒.(也发生不同。应用沙盒。

域(Domain)

user defaults
数据库中实际是出于多单层级的地带组成的,当您读取一个键值的多寡常常,NSUserDefaults从上到下透过域的层级寻找正确的价,不同之域有不同的作用,有些域是只是持久的,有些域则非常。

  • NSArgumentDomain (参数域):
    有最高的优先权,在这里安装的参数可以挂任何地方设置的参数.
  • ApplicationDomain
    (应用域):最要紧的域,它存储方若app通过NSUserDataults set...forKey添加底设置.
  • NSGlobalDomain (全局域) :存储在系统的安装
  • Languages – Specific Domain (语言域): 包括地方、日期等
  • NSRegistrationDomain (参数域) :
    仅来比较逊色之优先权,只有在应用域没有找到值时才自注册域去摸索。

流动:这些地方的先期级依次是起上至下.

iOS应用数据存储的常用方式

  • XML属性列表(plist)归档
  • Preference(偏好设置)
  • NSKeyedArchiver归档(NSCoding)
  • SQLite3
  • Core Data

iOS Sandbox

于一个iOS 程序来说,系统于它们提供一个容器,用来储存自己的信息.
每个ios应用都产生谈得来的用沙盒,应用沙盒就是文件系统目录,与其余使用放入文件
系统隔离,ios系统非同意看其他以之动沙盒.(也时有发生差,比如在用户授权情况下看通讯录,相册等)

使用沙盒

  • 每个iOS应用还产生友好之采用沙盒(应用沙盒就是文件系统目录),与外文件系统隔离。应用得待在团结之沙盒里,其他以不可知顾该沙盒

  • 模拟器应用沙盒的一干二净路径在: (apple是用户称, 8.0是模拟器版本)
    /Users/apple/Library/Application Support/iPhone
    Simulator/8.0/Applications

沙盒目录结构

沙盒结构

  • App Bundle: 包含有资源文件及可执行文件

  • Documents:
    保存应用运行时转的用持久化的多少,iTunes会自动备份该目录

  • tmp:
    保存应用运行时所用的旋数据,使用完后又用相应的公文于该目录删除,应用尚未运行时,系统啊可能会见活动清理拖欠目录下的文本,iTunes不会见并该目录,iPhone重开时欠目录下的文件会丢。

  • Libaray: 存储程序的默认设置和其它状态信息,iTunes会自动备份该目录。

  • Libaray/Caches:存放缓存文件,iTunes不见面备份此目录,此目录下文件不见面在动退出去,一般存放体积比较特别,不是非常要紧的资源

  • Libaray/Preferences:保存应用之有着偏好设置,ios的Settings(设置)应用会当该目录中找应用之装置信息,iTunes会自动备份该目录。

沙盒文件夹的独家作用

  • Documents:保存应用运行时变的需要持久化的多少,iTunes同步设备时会备份该目录。例如,游戏使用可将戏存档保存在该目录

  • tmp:保存应用运行时所欲的临时数据,使用完毕后再以相应的文本由该目录删除。应用尚未运行时,系统也或会见破该目录下之文书。iTunes同步设备时无见面备份该目录

  • Library/Caches:保存应用运行时别的内需持久化的多少,iTunes同步设备时未见面备份该目录。一般存储体积十分、不需要备份的非重要数据

  • Library/Preference:保存应用的装有偏好设置,iOS的Settings(设置)应用会在该目录中寻找应用之装置信息。iTunes同步设备时会备份该目录

怎获得文件路径

iOS设备受到每个文件还生门路,这仗的是文本于文件系统中的可靠位置.要吃应用程序能够读写器沙盒中之文书,需要指定该文件的共同体路径.

Core
Foundation提供了一个称呼吧NSSearchDirectoriesInDomains的C语言函数,他回去指向应用程序的目Documents或Library/Caches的路径.该函数可以回去多只目录,因此该函数的归来结果是一个NSArray对象.使用该函数来访问指定目录Documents或Library/Caches的不二法门时,它回到的数组将只有包含一个NSString.

// 获取沙盒主目录路径
 NSString *homeDir = NSHomeDirectory();
 // 获取Documents目录路径 
  NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) firstObject];
 // 获取Library的目录路径
  NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];
 // 获取Caches目录路径
  NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
  // 获取tmp目录路径
   NSString *tmpDir = NSTemporaryDirectory();

用沙盒目录的大获取方式

  • 沙盒根目录NSString *home = NSHomeDirectory();
  • Documents:
  • 使沙盒根目录拼接”Documents”字符串

// 不建议采用,因为新版本的操作系统可能会修改目录名
NSString *home = NSHomeDirectory();
NSString *documents = [home stringByAppendingPathComponent:@"Documents"];
  • 利用NSSearchPathForDirectoriesInDomains函数

// NSUserDomainMask 代表从用户文件夹下找
// YES 代表展开路径中的波浪字符“~”
NSArray *array =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
// 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素
NSString *documents = [array objectAtIndex:0];
  • tmp:NSString *tmp = NSTemporaryDirectory();
  • Library/Caches:(跟Documents类似的2种方法)
  • 下沙盒根目录拼接”Caches”字符串
  • 采取NSSearchPathForDirectoriesInDomains函数(将函数的第2单参数改呢:NSCachesDirectory即可)
  • Library/Preference:通过NSUserDefaults类存取该目录下之装置信息

诵读写多少

NSFileManager是一个单列类,也是一个文件管理器。可以由此NSFileManager创建文件夹、创建文件、写文件、读文件内容等等基本功能。

这边产生同等篇我道写得稀好之:
http://www.jianshu.com/p/64b673ba551b
便不再啰嗦了

SQLite

思念与豪门享用部分新手入门写得SQLite的数据库简单操作

自以这边用的是第三在的仓库:FMDB.不说废话直接上代码
即时是一个用FMDB后写得简单的数据库操作的好像

AddressBookDataBase.h 文件
  #import <FMDB/FMDB.h>

  #import <Foundation/Foundation.h>

  @interface AddressBookDataBase : NSObject
  -(void)openDataBase:(FMDatabase *)DataBase;
  -(FMDatabase *)createdDataBase;
  -(void)closeDataBase:(FMDatabase *)DataBase;
  -(void)insertDatatoDataBase:(FMDatabase *)DataBase nameIs:(NSString *) name  phoneNumberIs: (NSString *) phoneNumber;
  -(void)deleteDataFromDataBase:(FMDatabase *)DataBase nameIs:    (NSString *) name;
  -(void)modificationDataFromDataBase:(FMDatabase *)DataBase nameIs:(NSString *) name phoneNumberIs: (NSString *) phoneNumber originalName:(NSString *)originalName;
  -(void)deleteTableFromDataBase:(FMDatabase *)DataBase table:(NSString *)tableName;

  @end
AddressBookDataBase.m 文件
 #import "AddressBookDataBase.h"

 @implementation AddressBookDataBase
 -(FMDatabase *)createdDataBase{
    //创建打开数据库
     NSString * strPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/AddressList.db"];
     NSLog(@"%@",strPath);
     FMDatabase * db = [FMDatabase databaseWithPath:strPath];
     if (db != nil) {
          NSLog(@"数据库创建成功");
         }
     return db;
   }

 -(void)openDataBase: (FMDatabase *)DataBase{
      BOOL isOpen = [DataBase open];
      if (isOpen) {
      NSLog(@"打开数据库成功");
     }
   }

-(void)closeDataBase: (FMDatabase *)DataBase{
    BOOL isClose = [DataBase close];
    if (isClose) {
        NSLog(@"关闭数据库成功");
    }
   }

-(void)insertDatatoDataBase:(FMDatabase *)DataBase nameIs:(NSString *) name  phoneNumberIs: (NSString *) phoneNumber {
  NSString * strCreateTable = @"create table if not exists addressList(id integer  primary key autoincrement,name varchar(20),phoneNumber varchar(20));";
//如果执行成功  返回YES
  BOOL isCreate = [DataBase executeUpdate:strCreateTable];

  if(isCreate == YES){
    NSLog(@"创建数据表成功");
   }

   NSString * strInsert = [NSString stringWithFormat:@"insert into addressList values(NULL,'%@','%@');",name,phoneNumber];
   NSLog(@"%@",strInsert);

  BOOL isOK = [DataBase executeUpdate:strInsert];
  if (isOK == YES) {
      NSLog(@"插入数据成功");
  }

 }

-(void)deleteDataFromDataBase:(FMDatabase *)DataBase nameIs:(NSString *) name{
  NSString * strDelete = [NSString stringWithFormat:@"delete from addressList where name = '%@'",name];
  NSLog(@"%@",strDelete);
  BOOL isOK = [DataBase executeUpdate:strDelete];
  if(isOK == YES){
    NSLog(@"删除成功");
  }

}
-(void)modificationDataFromDataBase:(FMDatabase *)DataBase nameIs:(NSString *) name phoneNumberIs: (NSString *) phoneNumber originalName:(NSString *)originalName{

  NSString* strModification = [NSString stringWithFormat:@"update addressList set phoneNumber = '%@', name = '%@' where name = '%@';",phoneNumber,name,originalName];
  NSLog(@"%@",strModification);

  BOOL isOk = [DataBase executeUpdate:strModification];
  if(isOk ==YES){
      NSLog(@"修改表成功!");
  }
}

-(void)deleteTableFromDataBase:(FMDatabase *)DataBase table:(NSString *)tableName{
   NSString* strDeleteTable = [NSString stringWithFormat:@"drop table %@",tableName];
   BOOL isOk = [DataBase executeUpdate:strDeleteTable];
   if(isOk ==YES){
    NSLog(@"删除表成功!");
    }
  }

 @end

关于sqlite的组成部分语法的题目,这里叫大家推荐一个网站
http://www.runoob.com/sqlite/sqlite-update.html.
中间关于SQLite的报告句有详尽的语法讲解,希望得以协助到大家.

总结

至于Domain的操作 实际上就简的多少存储操作.有时光人家说Domain
你可能无知晓是呀了思.查查字典,Google
会知道的.而Domain又分开了许多只Domain.所以很易就动手瞎了.你用懂得这些Domain之间的区别.

关于NSSearchDirectoriesInDomains该函数的返回值是一个NSString的频繁组.
本条函数有只domainMask,这里只举出NSUserDomainMask.的情况.如果这里的参数写的凡其一NSUserDomainMask.但是该数组用单纯生一个NSString对象.返回的就是是你在NSHomeDirectory下寻找Documents/Library文件夹的行程径.所以使用的当儿一直用下标访问就可了.其他的请查阅NSSearchDirectoriesInDomainsAPI的说明

相关文章