1.NSKeyedArchiver:采用歸檔的形式來儲存資料,該資料對象需要遵守NSCoding協定,并且該對象對應的必須提供encodeWithCoder:和initWithCoder:方法。前一個方法告訴系統怎麼對對象進行<span style="margin:0px; padding:0px; border:none; background-color:inherit">編碼,而後一個法則是告訴系統怎麼對對象進行解碼。例如
對象歸檔儲存。 定義Student:
@interface MJStudent : NSObject <NSCoding>
@property (nonatomic, copy) NSString *no;
@property (nonatomic, assign) double height;
@property (nonatomic, assign) int age;
@end
- (void)encodeWithCoder:(NSCoder *)enCoder {
[enCoder encodeObject:self.no forKey:@"no"];
[enCoder encodeInt:self.age forKey:@"age"];
[enCoder encodeDouble:self.height forKey:@"height"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.no = [decoder decodeObjectForKey:@"no"];
self.age = [decoder decodeIntForKey:@"age"];
self.height = [decoder decodeDoubleForKey:@"height"];
}
return self;
}
調用:
// 1.新的模型對象
Student *stu = [[Student alloc] init];
stu.no = @"10203203";
stu.age = 19;
stu.height = 1.58;
// 2.歸檔模型對象
// 2.1.獲得Documents的全路徑
NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [document stringByAppendingPathComponent:@"studengt.data"];
[NSKeyedArchiver archiveRootObject:stu toFile:path];
// 3.從檔案中讀取MJStudent對象
Student *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
缺點:歸檔的形式來儲存資料,隻能一次性歸檔儲存以及一次性解壓。是以隻能針對小量資料,而且對資料操 作比較笨拙,即如果想改動資料的某一小部分,還是需要解壓整個資料或者歸檔整個資料。
2.NSUserDefaults:用來儲存應用程式設定和屬性、使用者儲存的資料。使用者再次打開程式或開機後這些資料仍然存在。NSUserDefaults可以存儲的資料類型包括:NSData、NSString、NSNumber、NSDate、
NSArray、NSDictionary。如果要存儲其他類型,則需要轉換為前面的類型,才能用NSUserDefaults存儲。具體實作為: 儲存資料:
// 1.利用NSUserDefaults,就能直接通路軟體的偏好設定(Library/Preferences)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 2.存儲資料
[defaults setObject:@"yang" forKey:@"account"];
[defaults setObject:@"123456" forKey:@"password"];
[defaults setInteger:19 forKey:@"age"];
[defaults setBool:YES forKey:@"auto_login"];
// 3.立刻同步
[defaults synchronize];
//4.讀取資料
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]
NSString *account = [defaults objectForKey:@"account"]
3. Write寫入方式:永久儲存在磁盤中。具體方法為:
// 1.獲得沙盒根路徑
NSString *home = NSHomeDirectory();
// 2.document路徑
NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
// 3.建立資料
NSArray *data = @[@"yang", @19, @"ffdsf"];
NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"];
[data writeToFile:filepath atomically:YES]; 4.讀取檔案<p class="p1"><span class="s1"> NSArray</span><span class="s2"> *data = [</span><span class="s1">NSArray</span><span class="s2"> </span><span class="s3">arrayWithContentsOfFile</span><span class="s2">:filepath];</span></p>
</pre><pre name="code" class="objc">
4. SQLite:采用SQLite資料庫來存儲資料。SQLite作為一中小型資料庫,應用ios中,跟前三種儲存方式相比,相對比較複雜一些。此處就不舉例了