`

iPhone开发数据持久化总结之第2篇—属性文件(.plist) .

    博客分类:
  • ios
ios 
阅读更多
实现的功能:1)演示使用属性文件持久化数据。

关键词:数据持久化 属性文件 plist



1、新建一个Sigle View Application,命名为Persistence-file,工程结构如下

[img]

[/img]





2、修改ViewController.xib,添加4个Label控件和4个TextField控件,如下:

[img]

[/img]






3、修改ViewController.h,如下:

#define kFileName @"data.plist"
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property(nonatomic,retain)IBOutlet UITextField *name;
@property(nonatomic,retain)IBOutlet UITextField *gender;
@property(nonatomic,retain)IBOutlet UITextField *age;
@property(nonatomic,retain)IBOutlet UITextField *education;

-(NSString *)dataFilePath;
-(void)applicationWillResignActive:(NSNotification *)nofication;

@end

注意,需要连接各个输出口





4、修改ViewController.m,如下:
#import "ViewController.h"

@implementation ViewController
@synthesize name,gender,age,education;

#pragma mark - View lifecycle
- (void)viewDidLoad
{
	// Do any additional setup after loading the view, typically from a nib.
    [super viewDidLoad];
    UIApplication *app = [UIApplication sharedApplication];
    //订阅通知UIApplicationWillResignActiveNotification,进行数据保存操作
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:app];
    //初始化数据
    [self initData];
}

-(void)initData{
    NSString *filePath = [self dataFilePath];
    NSLog(@"filePath=%@",filePath);
    
    //从文件中读取数据,首先判断文件是否存在
    if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
        NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];
        name.text = [array objectAtIndex:0];
        gender.text = [array objectAtIndex:1];
        age.text = [array objectAtIndex:2];
        education.text = [array objectAtIndex:3];
        
        [array release];
    }
}

-(void)applicationWillResignActive:(NSNotification *)nofication{
    NSMutableArray *array = [[NSMutableArray alloc]init];
    [array addObject:name.text];
    [array addObject:gender.text];
    [array addObject:age.text];
    [array addObject:education.text];
    //将数据写入到文件dataFilePath中
    [array writeToFile:[self dataFilePath] atomically:YES];
    [array release];
}

//获得文件路径
-(NSString *)dataFilePath{
    //检索Documents目录
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);//备注1
    NSString *documentsDirectory = [paths objectAtIndex:0];//备注2
    return [documentsDirectory stringByAppendingPathComponent:kFileName];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.name = nil;
    self.gender = nil;
    self.age = nil;
    self.education = nil;
}

-(void)dealloc{
    [name release];
    [gender release];
    [age release];
    [education release];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
	[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
	[super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end


备注1、备注2:
NSDocumentDirectory:常量,表明正在查找Documents目录的路径
NSUserDomainMask:常量,表面将搜索限制与当前应用程序的沙盒中,这样的话只能找到一个Documents目录,因为每个应用程序沙盒中只有一个Documents目录,所以备注2中从paths中取第一个即为当前应用程序的Documents目录的路径


5、编译、运行,在TextField中输入内容,然后退出Simulator,进行测试:

[img]

[/img]    [img]

[/img]





6、通过上一篇对IOS应用程序沙盒的的介绍,本工程属性文件data.plist,保存的位置是:

/Users/duobianxing/Library/Application Support/iPhone Simulator/5.0/Applications/88528A36-00CB-4900-9762-1FD5D6AC8595/Documents

[img]

[/img]






7、总结:

1)可以简单保存静态数据,但是无法将自定义对象序列化到属性列表中

2)该持久化方法与上一篇中介绍的NSUserDefaults实质上都是将数据写入到.plist属性文件中,区别是文件保存的位置不同。











  • 大小: 39.3 KB
  • 大小: 16.2 KB
  • 大小: 119.1 KB
  • 大小: 86.8 KB
  • 大小: 55.5 KB
分享到:
评论

相关推荐

    iPhone开发秘籍.part2.rar

    10.6.2 密钥链持久化.....267 10.7 发送和接收文件.....267 10.8 秘诀:构建一个简单的基于Web 的 服务器.....268 10.9 即时消息传送.....272 10.10 小结.....272 第11章Cover Flow 编程......274 11.1 ...

    iPhone开发秘籍.part1.rar

    10.6.2 密钥链持久化.....267 10.7 发送和接收文件.....267 10.8 秘诀:构建一个简单的基于Web 的 服务器.....268 10.9 即时消息传送.....272 10.10 小结.....272 第11章Cover Flow 编程......274 11.1 ...

    iPhone开发秘籍.part4.rar

    10.6.2 密钥链持久化.....267 10.7 发送和接收文件.....267 10.8 秘诀:构建一个简单的基于Web 的 服务器.....268 10.9 即时消息传送.....272 10.10 小结.....272 第11章Cover Flow 编程......274 11.1 ...

    《Iphone开发基础教程》第十一章 基本数据持久性

    对于iOS应用来说,常见的数据持久化方式有SQLite数据库、Core Data框架、文件系统(如XML、JSON、plist文件)以及UserDefaults等。 本章重点介绍了SQLite数据库的使用。SQLite支持SQL语言,可以创建表、插入、更新...

    iOS实例开发源码——gckjdev-HitGame_iPhone-1a30d6d.zip

    深入研究这份源码,我们可以学习到iOS应用的生命周期管理、事件处理、图形渲染、游戏循环、碰撞检测、用户输入响应、多线程编程、内存管理、网络请求和数据持久化等方面的知识。同时,也可以通过查看源码了解如何...

    iphone开发常用代码

    在iOS开发领域,iPhone应用程序的开发主要依赖于Apple的Swift编程语言和Xcode集成开发环境。本主题聚焦于“iPhone开发常用代码”,我们将探讨一些在实际项目中经常使用的代码片段和概念,这些对于任何iOS开发者来说...

    iphone开发教程1

    随着课程的深入,你还将接触到网络请求、数据持久化、动画效果、多线程、第三方库的使用等内容,逐步成长为一名熟练的iOS开发者。国内大学虽然可能尚未广泛开设相关课程,但借助这些公开资源,个人自学也完全可行,...

    iphone-app-master.zip

    5. 数据持久化:可能采用Core Data或SQLite存储用户数据。 6. 自定义控件:开发者可能会根据需求定制一些UI组件,提高用户体验。 7. 通知与推送:集成Apple Push Notification服务,实现实时消息推送。 此外,通过...

    iPhone 开发基础教程 Beginning iOS 6 Development Exploring the iOS SDK

    - 涉及iOS中的数据存储方式,包括使用属性列表(Plist)、SQLite数据库、CoreData框架进行数据持久化。 #### 第14章:嘿!你!上iCloud! - 介绍如何利用iCloud为应用提供云端备份和数据同步的功能,包括使用...

    Beginning iPhone Development:Source code

    通过分析和运行这些源代码,读者可以了解到如何设置项目结构,创建视图控制器,处理用户输入,使用UIKit框架来构建用户界面,以及如何利用Core Data进行数据持久化。同时,还会涉及到网络请求、动画效果、多线程编程...

    iPhone开发源码

    学习如何设置数据模型,使用NSManagedObject进行操作,以及执行查询,对于实现数据持久化至关重要。 七、网络编程 iPhone应用通常需要与服务器通信,学习HTTP/HTTPS协议,使用NSURLSession或第三方库如Alamofire...

    IPhone开发教程

    8. **Core Data**:苹果提供的持久化框架,用于存储应用程序的数据。了解实体、属性、关系和NSManagedObject的使用。 9. **动画与手势识别**:如何利用Core Animation创建平滑的视觉效果,以及添加手势识别器(如...

    ios应用源码之一些iphone开源项目代码iphone-tris 2018127

    4. **Core Data**:如果项目涉及到数据持久化,可能会用到Core Data来存储和管理应用的数据。 5. **Storyboard和Auto Layout**:iOS应用通常使用Storyboard来设计UI布局,并使用Auto Layout来实现响应式布局,适应...

    cocos2d-iphone之魔塔20层第五部分

    《cocos2d-iphone之魔塔20层第五部分》是关于使用cocos2d-iphone框架开发经典游戏——魔塔的一个教程章节。在这个部分,我们将深入探讨如何利用cocos2d-iphone的特性来实现魔塔游戏的第20层的逻辑和交互。 首先,...

    iPhone应用开发 RSS实例 源代码

    它通常会遵循`NSCoding`协议,以便于数据的持久化。 2. **网络请求**:为了获取RSS feed,我们需要进行网络请求。在iOS中,可以使用`NSURLSession`或`NSURLConnection`进行异步数据加载。在源代码中,可能有一个...

    iOS游戏应用源代码——tototti-Sendai.iPhone-ver1.3-sample-4c1a743.zip

    此外,还会涉及用户数据持久化,如使用Core Data或SQLite存储玩家进度。 总之,通过对“Tototti-Sendai.iPhone-ver1.3-sample-4c1a743.zip”源代码的深入研究,开发者不仅可以了解iOS游戏的开发流程,还能掌握到iOS...

    ios应用源码之第一个我们小组的iphone程序lmax郎迈 2018128

    在本资源中,"ios应用源码之第一个我们小组的iphone程序lmax郎迈" 提供了一个关于iOS应用开发的实例。这个项目可能是由一个名为“lmax郎迈”的团队创建的第一个iPhone应用程序的源代码。从这个源码中,我们可以学习...

    iphone 程序简单框架

    - Core Data是苹果提供的对象关系映射框架,用于本地数据持久化。SQLite数据库、Plist文件或用户 Defaults 也是常见的数据存储方式。 - JSON 和 XML 等网络数据可以通过`NSURLSession`或第三方库如AFNetworking...

Global site tag (gtag.js) - Google Analytics