A. ios中数据存储有哪些方式如果一个自定义列的对象要写入文件如何实现
打开目录/Users/andy/Library/Application Support/iPhone Simulator/5.1/Applications就会看到模拟器上的程序文件夹,你会看到iphone每个应用程序都有自己的3个目录(Document,Library,tmp)
Documents存放应用程序的数据。
Library目录下面还有Preferences和Caches目录,Preferences目录存放应用程序的使用偏好,Caches目录与Documents很相 是可以存放应用程序的数据。
tmp目录供应用程序存储临时文件。
注意,如果你的设置没有设置为查看隐藏目录,你是看不到的,设置显示隐藏文件方法:在终端输入命令:defaults write com.apple.finder AppleShowAllFiles -bool true然后重启下finder。
B. iOS的其他系统数据到底是什么
iOS的其他系统数据是App的缓存。
iPhone储存空间中的“其他”数据占用较多空间。目前,设备储存空间中的“其他”数据包含不可移除的移动资源,例如,Siri语音、字体、词典、不可移除的日志和缓存、聚焦索引以及系统数据,例如,钥匙串和CloudKit数据库。系统无法删除缓存的文件。
简介
数据缓存,指在硬盘内部的高速存储器,在电脑中就象一块缓冲器一样将一些数据暂时性的保存起来以供读取和再读取。对于大数据缓存的硬盘在存取零散文件时具有很大的优势。
硬盘的高速缓存一般为512KB—2MB,主流SATA硬盘的数据缓存为2MB,而在SCSI硬盘中最高的数据缓存已经达到了16MB。
C. iOS中几种常用的数据存储方式
第一种,iTunes。
在iPhone的应用商店就可以查找到,既可以用来恢复iPhone自带的一些手机数据,还可以将第三方的社交聊天记录进行恢复,使用都还比较方便。
D. ios数据存能存储哪些数据类型
如图, 支持 NSArray, NSDictionary, BOOL, NSData, NSDate, NSNumber, NSString
E. ios中sqlite怎么存储数据的
SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效。SQLite3使得不必将每个对象都加到内存中。
基本操作:
(1)打开或者创建数据库
sqlite3 *database; int result = sqlite3_open("/path/databaseFile", &database);
如果/path/databaseFile不存在,则创建它,否则打开它。如果result的值是SQLITE_OK,则表明我们的操作成功。
注意上述语句中数据库文件的地址字符串前面没有@字符,它是一个C字符串。将NSString字符串转成C字符串的方法是:
const char *cString = [nsString UTF8String];
(2)关闭数据库
sqlite3_close(database);
(3)创建一个表格
char *errorMsg; const char *createSQL = "CREATE TABLE IF NOT EXISTS PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, FIELD_DATA TEXT)"; int result = sqlite3_exec(database, createSQL, NULL, NULL, &errorMsg);
执行之后,如果result的值是SQLITE_OK,则表明执行成功;否则,错误信息存储在errorMsg中。
sqlite3_exec这个方法可以执行那些没有返回结果的操作,例如创建、插入、删除等。
(4)查询操作
NSString *query = @"SELECT ID, FIELD_DATA FROM FIELDS ORDER BY ROW"; sqlite3_stmt *statement; int result = sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil);
如果result的值是SQLITE_OK,则表明准备好statement,接下来执行查询:
while (sqlite3_step(statement) == SQLITE_ROW) { int rowNum = sqlite3_column_int(statement, 0); char *rowData = (char *)sqlite3_column_text(statement, 1); NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData]; // Do something with the data here } sqlite3_finalize(statement);
使用过其他数据库的话应该很好理解这段语句,这个就是依次将每行的数据存在statement中,然后根据每行的字段取出数据。
(5)使用约束变量
实际操作时经常使用叫做约束变量的东西来构造SQL字符串,从而进行插入、查询或者删除等。
例如,要执行带两个约束变量的插入操作,第一个变量是int类型,第二个是C字符串:
char *sql = "insert into oneTable values (?, ?);"; sqlite3_stmt *stmt; if (sqlite3_prepare_v2(database, sql, -1, &stmt, nil) == SQLITE_OK) { sqlite3_bind_int(stmt, 1, 235); sqlite3_bind_text(stmt, 2, "valueString", -1, NULL); } if (sqlite3_step(stmt) != SQLITE_DONE) NSLog(@"Something is Wrong!"); sqlite3_finalize(stmt);
这里,sqlite3_bind_int(stmt, 1, 235);有三个参数:
第一个是sqlite3_stmt类型的变量,在之前的sqlite3_prepare_v2中使用的。
第二个是所约束变量的标签index。
第三个参数是要加的值。
有一些函数多出两个变量,例如
sqlite3_bind_text(stmt, 2, "valueString", -1, NULL);
这句,第四个参数代表第三个参数中需要传递的长度。对于C字符串来说,-1表示传递全部字符串。
第五个参数是一个回调函数,比如执行后做内存清除工作。
F. iOS开发怎么获取本地数据和把数据存储到本地
一般获取本地数据是从plist文件中读取JSON数据。
读取数据:
NSString
*plistPath
=
[[NSBundle
mainBundle]
pathForResource:@"city"
ofType:@"plist"];
NSArrary
*cityArray
=
[[NSArray
alloc]initWithContentsOfFile:plistPath];
这里的cityArray根据你存在plist中的数据类型来确定,如果plist中是字典类型,那么你这里需要使用NSDictionary去存储你从plist中获取到的数据。
至于本地存储数据的话根据你项目的具体功能来设计,一般的小型数据如用户昵称、手机号等使用NSUserDefault即可,但是如果是大量数据如账单类app中的账单数据那么此时需要考虑使用sqlite3去存储数据,至于密码之类就需要使用NSKeydArchiver去存储。
G. iOS中数据大量存储本地,出现卡顿后啥时数据存好了
存大量数据,一般有sqlit这个数据库,什么时候存好,就是你离开的时候,或者需要执行下一个操作就代表存完了,你太小看数据库了
H. iOS怎么存储用户信息,即便APP卸载后仍然存在
keychain 可以,但是为什么要存这些信息呢,这些都是实时获取的。
另外建议给项目的 Entitlements.plist 里加上 keychain-access-groups,实现同一个开发者账号下的app可以共享这些数据。
如果项目里还没有 Entitlements ,在Xcode里打个勾就帮你完成了。
I. iOS本地数据存储都有哪几种方式
简单的数据,对安全性要求不高的数据可以使用 NSUserDefaults (本质上是一个plist)来存储
相对复杂点的数据,可以使用coredata (本质上是使用sqlite 来存储)
对安全性要求较高的数据,可以使用keychain 来存储。