您好,登錄后才能下訂單哦!
iOS上常用四種數據存取方法有:
屬性列表
對象歸檔
iOS的嵌入式關系數據庫(SQLite3)
蘋果公司提供持久性共聚Core Data
它們的應用程序都有自己的/Documents文件夾,各自的應用程序只能讀寫自己的/Documents目錄內容
1.創建一個新工程叫PersistenceDemo; File->New->Project ->single View Application -> next
2.在PersistenceViewController.h文件聲明輸出口和和實例方法
#import <UIKit/UIKit.h> @interface PersistenceViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *field1; @property (weak, nonatomic) IBOutlet UITextField *field2; @property (weak, nonatomic) IBOutlet UITextField *field3; @property (weak, nonatomic) IBOutlet UITextField *field4; -(NSString *)dataFilePath; -(void)applicationWillResignActive:(NSNotification *)notification; @end
4.在對應的.m文件中
dataFilePath將kFileName串聯到Documents目錄的路徑,以創建并返回數據文件的完整路徑名
-(NSString *)dataFilePath { /*常量NSDocumentDirectory表明我們正在查找Documents目錄路徑,第二個常量NSUserDomainMask表示的是把搜索范圍定在應用程序沙盒中,YES表示的是希望希望該函數能查看用戶主目錄*/ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // 數組索引0處Documentd目錄, NSString *documentDirectory = [paths objectAtIndex:0]; // 返回一個kFileName的完整路徑 return [documentDirectory stringByAppendingPathComponent:kFileName]; }
- (void)viewDidLoad { [super viewDidLoad]; // 檢查數據文件是否存在,不存在則不加載 NSString *filePath = [self dataFilePath]; if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]) { NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath]; field1.text = [array objectAtIndex:0]; field2.text = [array objectAtIndex:1]; field3.text = [array objectAtIndex:2]; field4.text = [array objectAtIndex:3]; } // 注冊一個通知,按下home鍵,執行applicationWillResignActive:方法 UIApplication *app = [UIApplication sharedApplication]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillTerminateNotification object:app]; }
//當按下home鍵的時候調用這個方法 -(void)applicationWillResignActive:(NSNotification *)notification { NSMutableArray *array = [[NSMutableArray alloc] init]; [array addObject:field1.text]; [array addObject:field2.text]; [array addObject:field3.text]; [array addObject:field4.text]; // 將TextField中數據寫入到屬性表之中 [array writeToFile:[self dataFilePath] atomically:YES]; }
Notification對象非常簡單. 它就是poster要提供給observer的信息包裹. notification對象有兩個重要的成員變量: name 和 object. 一般object都是指向poster(為了讓observer在接受到notification時可以回調到poster)
所以,notification有兩個方法
- (NSString *)name
- (id)object
NSNotificaitonCernter是架構的大腦了.它允許我們注冊observer對象, 發送notification, 撤銷observer對象注冊
下面是它的一些常用方法
+ (NSNotificationCenter *)defaultCenter
返回notification center [類方法,返回全局對象, 單件模式.cocoa的很多的全局對象都是通過類似方法實現]
- (void)addObserver:(id)anObserver
selector:(SEL)aSelector
name:(NSString *)notificationName
object:(id)anObject
注冊anObserver對象:接受名字為notificationName, 發送者為anObject的notification. 當anObject發送名字為notificationName的notification時, 將會調用anObserver的aSelector方法,參數為該notification. 如果notificationName為nil. 那么notification center將anObject發送的所有notification轉發給observer
. 如果anObject為nil.那么notification center將所有名字為notificationName的notification轉發給observer
- (void)postNotification:(NSNotification *)notification
發送notification至notification center
- (void)postNotificationName:(NSString *)aName
object:(id)anObject
創建并發送一個notification
- (void)removeObserver:(id)observer
移除observer
引用 http://blog.csdn.net/zhanglei5415/article/details/6454940
源代碼:http://download.csdn.net/detail/duxinfeng2010/4445711
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。