oc中对文件的操作(加载已有文件数据,存取文件)

----------------------------File.h-------------------------------

#import <Foundation/Foundation.h>

 

@interface FileHelper : NSObject

+(NSMutableArray *)loadData;//加载数据并保存在数组中

+(void)saveStudentData:(NSMutableArray *)dataArr;//保存数据在数组中

+(NSMutableArray *)loadStudentData;//以学生为例

@end

----------------------------------------------------------------

----------------------------File.m-----------------------------

#import "File.h"

/**设置文件保存的路径*/

static NSString * DATA_INFO_FILE = (NSString *)path;

@implementation File

//加载文件,

+(NSMutableArray *)loadDataFromFile:(NSString *)filename{

    return [NSKeyedUnarchiver unarchiveObjectWithFile:filename];

}

 //保存文件

+(void)saveData:(NSMutableArray *)dataArr toFile:(NSString *)filename{

    [NSKeyedArchiver archiveRootObject:dataArr toFile:filename];

}

//加载学生数据

+(NSMutableArray *)loadStudentData{

    // self 就是指调用当前方法的receiver

    // 谁调用当前方法,self就指谁

   return [self loadDataFromFile:STUDENT_INFO_FILE];

}

//保存学生数据

+(void)saveStudentData:(NSMutableArray *)dataArr{

    [self saveData:dataArr toFile:STUDENT_INFO_FILE];

}

----------------------------------------------------------------

----------------------Student---------------------------------

#import <Foundation/Foundation.h>

 

@interface Student : NSObject<NSCoding>

//学号、姓名、密码、系别、班级、电话

@property(nonatomic, copy)NSString * number;

@property(nonatomic, copy)NSString * name;

@property(nonatomic, copy)NSString * password;

@property(nonatomic, copy)NSString * department;

@property(nonatomic, copy)NSString * grade;

@property(nonatomic, copy)NSString * phone;

-(id)initWithNumber:(NSString *)number andName:(NSString *)name andPassword:(NSString *)password andDepartment:(NSString *)department andGrade:(NSString *)grade andPhone:(NSString *)phone;

@end

-------------------------------------------------------------

-----------------------Student.m--------------------------

#import "Student.h"

@implementation Student

 /**初始化学生对象*/

-(id)initWithNumber:(NSString *)number andName:(NSString *)name andPassword:(NSString *)password andDepartment:(NSString *)department andGrade:(NSString *)grade andPhone:(NSString *)phone{

    self = [super init];

    if (self) {

        self.number = number;

        self.name = name;

        self.password = password;

        self.department = department;

        self.grade = grade;

        self.phone = phone;

    }

    return self;

}

 

/**序列化,作用:通过ios的协议将文件保存*/

- (void)encodeWithCoder:(NSCoder *)aCoder{

    [aCoder encodeObject:self.number forKey:@"number"];

    [aCoder encodeObject:self.name forKey:@"name"];

    [aCoder encodeObject:self.password forKey:@"password"];

    [aCoder encodeObject:self.department forKey:@"department"];

    [aCoder encodeObject:self.grade forKey:@"grade"];

    [aCoder encodeObject:self.phone forKey:@"phone"];

}

 

/**反序列化,作用:通过ios协议读取文件*/

- (id)initWithCoder:(NSCoder *)aDecoder{

    self = [super init];

    if (self) {

        self.number = [aDecoder decodeObjectForKey:@"number"];

        self.name = [aDecoder decodeObjectForKey:@"name"];

        self.password = [aDecoder decodeObjectForKey:@"password"];

        self.department = [aDecoder decodeObjectForKey:@"department"];

        self.grade = [aDecoder decodeObjectForKey:@"grade"];

        self.phone = [aDecoder decodeObjectForKey:@"phone"];

    }

    return self;

}

 

/**打印出学生基本信息*/

-(NSString *)description{

    return [NSString stringWithFormat:@"%@   %@   %@   %@    %@", self.number, self.name, self.department, self.grade, self.phone];

}

@end

----------------------------------------------------------

---------------Start.h-----------------------------------

+(void)saveDataAfterAppDown;

+(void)loadDataBeforeAppRun;

----------------------------------------------------------

----------------------Start.m---------------------------

+(void)loadDataBeforeAppRun

{

/**加载学生信息文件并初始化一个学生信息数组,用来保存学生的基本信息*/

    

    studentArr = [FileHelper loadStudentData];

    if (studentArr == nil) {

        studentArr = [[NSMutableArray alloc]init];

    }

}

/**保存本次的数据*/

+(void)saveDataAfterAppDown{

NSLog(@"系统退出,正在保存信息。。。");

    

    [File saveStudentData:studentArr];

}

----------------------------------------------------------

时间: 2024-11-10 13:44:34

oc中对文件的操作(加载已有文件数据,存取文件)的相关文章

android 代码加载 已知文件名 的资源文件

Android开发中如果需要用到某个资源,直接使用R.drawable.**文件即可.但是如果一开始无法知道具体加载哪个资源文件,必须在程序中动态获取ID值并加载.而加载过程是使用文件名来加载的,方式如下: public static String RESOURCE_PATH = "android.resource://packagename/"; 假设存在一个名为content_icon的资源图片 public Uri getIconUri(String drawableName)

C# IO操作(五)文件的递归加载

本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下: 当点击“加载”按钮时,根据路径中的地址,加载该文件夹下所有的子文件夹和子文件,代码如下: 1 private void BtnLoad_Click(object sender, EventArgs e) 2 { 3 string sPath = txtPath.Text.Trim(); 4 LoadDirAndFile(sPath, tvList.Nodes); 5 } 6 7 private void LoadDirAn

cordova加载层、进度条、文件选择插件

在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢也是正常的.为了能够让应用尽可能的接近原生应用的效果,我业余时间做了一套对话框插件,使用后应用的使用体验立马有了很大的提升.兼容ios和安卓平台.插件包括加载层.进度条.文件选择.项目已经放到了github,有兴趣的小伙伴可以下载试一试. 插件只支持cordova5.0及以上版本,初始化如下: co

profile文件的错误加载与基本命令间的映射

一.绪论 [因为这篇心得是原创的,所以如果有哪处总结或者意见不足的地方,欢迎各位大神的批评和意见,共同学习,谢谢了!] 早些时候,需要在centos6.4系统中配置单机版和集群版单节点的hadoop HDFS,由于那时候一边跟老师学hadoop一边自学Linux.初学的自己懂得也不多,别人都用普通用户登录,在需要root权限时才sudo或者切换root用户进行配置,而我呢? 从一开始就使用了root登录,在给java和hadoop配置了profile文件环境变量,等到重启之后,出现了下图的现象:

自定义类加载器——加载任意指定目录的class文件

public class MyClassLoader extends ClassLoader{ String path;//自定义类加载器所负责的文件夹 public MyClassLoader(String path) { super(); this.path = path; } @SuppressWarnings("deprecation") @Override protected Class<?> findClass(String name) throws Class

Microsoft Excel 文件未完全加载

今天(具体说是昨天)处理一个90多M的csv文件,一打开,报错"文件未完全加载", 这什么情况啊,我还想另存为xlsx的,这样就可以导入SQL Server了!(Easy,我知道csv等平面文件也可以导入SQL Server) 我以为文件坏了呢,毕竟这么大,这么多年,第一次打开90多M的csv(excel)文件.重新打开还是一样的问题. 只好点击"显示帮助",才知道原因,原来excel的行列数不能超过1,048,576行和16,384列的限制.才想起是这个问题,ex

使用requireJS加载不符合AMD规范的js文件:shim的使用方式和实现原理

我们知道在javascript中定义全局变量有2种方式,本质上是等价的,都是向window对象注入属性或者方法. // global.js var g_name = "aty"; window.g_age = 25; 当global.js加载的时候,浏览器的全局对象window就会多出2个属性:g_name和g_age. 我们编写一个js工具类或者是js框架,通常有2种方式: 方式1:dateUtil.js (function(window) { var DateUtils = {};

关于air文件拖入加载解析的两个问题

因需用到拖入加载问价解析,于是第一感觉就是想到了air,经网上查到代码如下: public class Darg extends Sprite     {         public function Darg ()         {             if (stage) {                 creat();             }else{                 addEventListener(Event.ADDED_TO_STAGE,creat);

tomcat 无法加载js和css 等静态文件的问题

前段时间做了个网站,在本地tomcat测试都没有问题,但是部署到阿里云上之后,系统样式全没了.jsp等动态页面访问正常. 打开浏览器监控发现所有的css 和js 文件返回都是404 .直接访问单个的css 文件也同样是404.以为是路径错了,于是一一对了一遍各个文件的路径和服务器上 tomcat路径方面的设置 发现路径没有问题.在网站更目录创建一个css文件和html文件均不能访问.确认不是网站路径的问题. 然后怀疑是tomcat 和 Apache 冲突了,或者可能是Apache 的设置不对.因