IOS運用數據存儲方法(歸檔)
1、簡略解釋
在應用plist停止數據存儲和讀取,只實用於體系自帶的一些經常使用類型能力用,且必需先獲得途徑絕對費事;
偏好設置(將一切的器械都保留在統一個文件夾上面,且重要用於存儲運用的設相信息)
歸檔:由於前二者都有一個致命的缺點,只能存儲經常使用的類型。歸檔可以完成把自界說的對象寄存在文件中。
2、代碼示例
1.文件構造
2.代碼示例
YYViewController.m文件
//
// YYViewController.m
// 02-歸檔
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import "YYViewController.h"
#import "YYPerson.h"
@interface YYViewController ()
- (IBAction)saveBtnOnclick:(id)sender;
- (IBAction)readBtnOnclick:(id)sender;
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)saveBtnOnclick:(id)sender {
//1.創立對象
YYPerson *p=[[YYPerson alloc]init];
p.name=@"文頂頂";
p.age=23;
p.height=1.7;
//2.獲得文件途徑
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];
NSLog(@"path=%@",path);
//3.將自界說的對象保留到文件中
[NSKeyedArchiver archiveRootObject:p toFile:path];
}
- (IBAction)readBtnOnclick:(id)sender {
//1.獲得文件途徑
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];
NSLog(@"path=%@",path);
//2.從文件中讀取對象
YYPerson *p=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@,%d,%.1f",p.name,p.age,p.height);
}
@end
新建一個person類
YYPerson.h文件
//
// YYPerson.h
// 02-歸檔
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import <Foundation/Foundation.h>
// 假如想將一個自界說對象保留到文件中必需完成NSCoding協定
@interface YYPerson : NSObject<NSCoding>
//姓名
@property(nonatomic,copy)NSString *name;
//年紀
@property(nonatomic,assign)int age;
//身高
@property(nonatomic,assign)double height;
@end
YYPerson.m文件
//
// YYPerson.m
// 02-歸檔
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import "YYPerson.h"
@implementation YYPerson
// 當將一個自界說對象保留到文件的時刻就會挪用該辦法
// 在該辦法中解釋若何存儲自界說對象的屬性
// 也就說在該辦法中說清晰存儲自界說對象的哪些屬性
-(void)encodeWithCoder:(NSCoder *)aCoder
{
NSLog(@"挪用了encodeWithCoder:辦法");
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeInteger:self.age forKey:@"age"];
[aCoder encodeDouble:self.height forKey:@"height"];
}
// 當從文件中讀取一個對象的時刻就會挪用該辦法
// 在該辦法中解釋若何讀取保留在文件中的對象
// 也就是說在該辦法中說清晰怎樣讀取文件中的對象
-(id)initWithCoder:(NSCoder *)aDecoder
{
NSLog(@"挪用了initWithCoder:辦法");
//留意:在結構辦法中須要先初始化父類的辦法
if (self=[super init]) {
self.name=[aDecoder decodeObjectForKey:@"name"];
self.age=[aDecoder decodeIntegerForKey:@"age"];
self.height=[aDecoder decodeDoubleForKey:@"height"];
}
return self;
}
@end
3.打印後果和兩個主要的毛病提醒
點擊保留按鈕和讀取按鈕,勝利打印成果以下:
關於不完成兩個協定辦法的毛病提醒:
-(void)encodeWithCoder:(NSCoder *)aCoder辦法:
-(id)initWithCoder:(NSCoder *)aDecoder辦法:
3、繼續類中的應用
新建一個先生類,讓這個類繼續自Preson這個類,增長一個別重的屬性。
YYstudent.h文件
//
// YYstudent.h
// 02-歸檔
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import "YYPerson.h"
@interface YYstudent : YYPerson
//增長一個別重屬性
@property(nonatomic,assign) double weight;
@end
YYstudent.m文件
//
// YYstudent.m
// 02-歸檔
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import "YYstudent.h"
@implementation YYstudent
//在子類中重寫這兩個辦法
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[super encodeWithCoder:aCoder];
NSLog(@"挪用了YYStudent encodeWithCoder");
[aCoder encodeFloat:self.weight forKey:@"weight"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder]) {
NSLog(@"挪用了YYstudent initWithCoder");
self.weight = [aDecoder decodeFloatForKey:@"weight"];
}
return self;
}
@end
YYViewController.m文件
//
// YYViewController.m
// 02-歸檔
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import "YYViewController.h"
#import "YYPerson.h"
#import "YYstudent.h"
@interface YYViewController ()
- (IBAction)saveBtnOnclick:(id)sender;
- (IBAction)readBtnOnclick:(id)sender;
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)saveBtnOnclick:(id)sender {
//1.創立對象
// YYPerson *p=[[YYPerson alloc]init];
// p.name=@"文頂頂";
// p.age=23;
// p.height=1.7;
YYstudent *s=[[YYstudent alloc]init];
s.name=@"wendingding";
s.age=23;
s.height=1.7;
s.weight=62;
//2.獲得文件途徑
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];
NSLog(@"path=%@",path);
//3.將自界說的對象保留到文件中
// [NSKeyedArchiver archiveRootObject:p toFile:path];
[NSKeyedArchiver archiveRootObject:s toFile:path];
}
- (IBAction)readBtnOnclick:(id)sender {
//1.獲得文件途徑
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];
NSLog(@"path=%@",path);
//2.從文件中讀取對象
// YYPerson *p=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
// NSLog(@"%@,%d,%.1f",p.name,p.age,p.height);
YYstudent *s=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@,%d,%.1f,%f",s.name,s.age,s.height,s.weight);
}
@end
4、主要解釋
1.保留數據進程:
//1.創立對象
YYstudent *s=[[YYstudent alloc]init];
s.name=@"wendingding";
s.age=23;
s.height=1.7;
s.weight=62;
//2.獲得文件途徑
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];
NSLog(@"path=%@",path);
//3.將自界說的對象保留到文件中
[NSKeyedArchiver archiveRootObject:s toFile:path];
//1.創立對象
YYstudent *s=[[YYstudent alloc]init];
s.name=@"wendingding";
s.age=23;
s.height=1.7;
s.weight=62;
//2.獲得文件途徑
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];
NSLog(@"path=%@",path);
//3.將自界說的對象保留到文件中
[NSKeyedArchiver archiveRootObject:s toFile:path];
IOS運用數據存儲方法(偏好設置)
1、簡略引見
許多IOS運用都支撐偏好設置,好比保留用戶名、暗碼、字體年夜小等設置,iOS供給了一套尺度的處理計劃來為運用參加偏好設置功效
每一個運用都有個NSUserDefaults實例,經由過程它來存取偏好設置。好比,保留用戶名、字體年夜小、能否主動登錄
存儲地位:
存儲情勢:
2、代碼示例
1.storyboard
2.代碼
//
// YYViewController.m
// 01-偏好設置
//
// Created by apple on 14-6-7.
// Copyright (c) 2014年 itcase. All rights reserved.
//
#import "YYViewController.h"
//偏好設置
@interface YYViewController ()
/**
*保留數據
*/
- (IBAction)saveData:(id)sender;
/**
* 讀取數據
*/
- (IBAction)readData:(id)sender;
@end
@implementation YYViewController
- (IBAction)saveData:(id)sender {
//1.獲得NSUserDefaults對象
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
//2保留數據(假如設置數據以後沒有同步, 會在未來某一時光點主動將數據保留到Preferences文件夾上面)
[defaults setObject:@"yangyong" forKey:@"name"];
[defaults setInteger:23 forKey:@"age"];
[defaults setDouble:1.73f forKey:@"height"];
[defaults setObject:@"man" forKey:@"gender"];
//3.強迫讓數據連忙保留
[defaults synchronize];
}
- (IBAction)readData:(id)sender {
//1.獲得NSUserDefaults對象
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
//讀取保留的數據
NSString *name=[defaults objectForKey:@"name"];
NSString *gender=[defaults objectForKey:@"gender"];
NSInteger age=[defaults integerForKey:@"age"];
double height=[defaults doubleForKey:@"height"];
//打印數據
NSLog(@"name=%@,gender=%@,age=%d,height=%.1f",name,gender,age,height);
}
@end
3.點擊保留數據,讀取數據按鈕打印以下
3、彌補解釋
1.保留數據
//1.獲得NSUserDefaults對象
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
//2保留數據
[defaults setObject:@"yangyong" forKey:@"name"];
[defaults setInteger:23 forKey:@"age"];
[defaults setDouble:1.73f forKey:@"height"];
[defaults setObject:@"man" forKey:@"gender"];
//3.強迫讓數據連忙保留
[defaults synchronize];
2.讀取數據
//1.獲得NSUserDefaults對象
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
//2.讀取保留的數據
NSString *name=[defaults objectForKey:@"name"];
NSString *gender=[defaults objectForKey:@"gender"];
NSInteger age=[defaults integerForKey:@"age"];
double height=[defaults doubleForKey:@"height"];
3.主要解釋
(1)偏好設置是專門用來保留運用法式的設置裝備擺設信息的, 普通情形不要在偏好設置中保留其他數據。假如應用體系的偏好設置來存儲數據, 默許就是存儲在Preferences文件夾上面的,偏好設置會將一切的數據都保留到統一個文件中。
(2)應用偏好設置對數據停止保留以後, 它保留到體系的時光是不肯定的,會在未來某一時光點主動將數據保留到Preferences文件夾上面,假如須要即刻將數據存儲,可使用[defaults synchronize];
(3)留意點:一切的信息都寫在一個文件中,比較簡略的plist可以保留和讀取根本的數據類型。
(4)步調:獲得NSuserDefaults,保留(讀取)數據
【詳解iOS開辟中app的歸檔和偏好設置的存儲方法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!