加载plist文件中的数据,两种方法
2011-12-28 11:53
393 查看
方法-:
NSString *path = [[NSBundle
mainBundle] pathForResource:@"data"
ofType:@"plist"];
NSDictionary *drinkDictionary
= [[NSDictionary
alloc] initWithContentsOfFile:path];
NSArray *array_ = [drinkDictionary
objectForKey:@"drinks"];
NSDictionary *dic=[array_
objectAtIndex:index];
NSString *name=[dic
objectForKey:@"name"];
NSArray *arrayStr= [[dic objectForKey:@"material"]
componentsSeparatedByString:@"\r"];//将string划分为数组,以换行的形式显示出来
NSMutableString *string_ = [[NSMutableString
alloc]
initWithString:@""];
for (int i =
0; i < [array_ count]; i++) {
[string_
appendFormat:@"<div style='background:rgba(100, 100, 255, 0) none repeat scroll 0 0 !important;
filter:Alpha(opacity=0);width:300;height:24px;'><span style='position:relative;color:black'>%@</span></div>",[array_
objectAtIndex:i]];
}
[string_
appendString:@""];
materalWebView.frame =
CGRectMake(20,490,280, [array_
count] * 40);//UIWebView *materalWebView;
[materalWebView
loadHTMLString:string_ baseURL:nil];
方法二:
#pragma mark -loaddrinkData
-(NSArray*)loadDinkInfoData
{
static
NSArray *__drinkData =
nil;
// only load the imageData array once
if (__drinkData == nil) {
// read the filenames/sizes out of a plist in the app bundle
NSString *path = [[NSBundle
mainBundle] pathForResource:@"DrinkInfoDataList"
ofType:@"plist"];
NSData *plistData = [NSData
dataWithContentsOfFile:path];
NSString *error; NSPropertyListFormat format;
__drinkData = [[NSPropertyListSerialization
propertyListFromData:plistData
mutabilityOption:NSPropertyListImmutable
format:&format
errorDescription:&error]
retain];
if (!__drinkData) {
NSLog(@"Failed to read drinkData info. Error: %@", error);
[error
release];
}
else NSLog(@"-----drink data=%@",__drinkData);
}
return __drinkData;
}
- (NSUInteger)drinkDataCount {
static
NSUInteger __count =
NSNotFound;
// only count the data once
if (__count == NSNotFound) {
__count = [[self
loadDinkInfoData]
count];
}
return __count;
}
- (NSString *)drinkNameAtIndex:(NSUInteger)index {
NSString *name = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
name = [data
valueForKey:@"name"];
}
return name;
}
- (NSArray *)drinkComponentAtIndex:(NSUInteger)index {
NSArray *_component = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
_component = [data
valueForKey:@"component"];
}
return _component;
}
- (NSString *)drinkMessageAtIndex:(NSUInteger)index {
NSString *message = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
message = [data
valueForKey:@"message"];
}
return message;
}
//image
- (UIImage *)imageAtIndex:(NSUInteger)index {
// use "imageWithContentsOfFile:" instead of "imageNamed:" here to avoid caching our images
NSString *imageName = [self
imageNameAtIndex:index];
NSString *path = [[NSBundle
mainBundle] pathForResource:imageName
ofType:@"jpg"];
return [UIImage
imageWithContentsOfFile:path];
}
- (NSString *)imageNameAtIndex:(NSUInteger)index {
NSString *imagename = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
imagename = [data
valueForKey:@"imagename"];
}
return imagename;
}
显然第二种方法比较整齐,但有些罗嗦。。。万变不离其中
NSString *path = [[NSBundle
mainBundle] pathForResource:@"data"
ofType:@"plist"];
NSDictionary *drinkDictionary
= [[NSDictionary
alloc] initWithContentsOfFile:path];
NSArray *array_ = [drinkDictionary
objectForKey:@"drinks"];
NSDictionary *dic=[array_
objectAtIndex:index];
NSString *name=[dic
objectForKey:@"name"];
NSArray *arrayStr= [[dic objectForKey:@"material"]
componentsSeparatedByString:@"\r"];//将string划分为数组,以换行的形式显示出来
NSMutableString *string_ = [[NSMutableString
alloc]
initWithString:@""];
for (int i =
0; i < [array_ count]; i++) {
[string_
appendFormat:@"<div style='background:rgba(100, 100, 255, 0) none repeat scroll 0 0 !important;
filter:Alpha(opacity=0);width:300;height:24px;'><span style='position:relative;color:black'>%@</span></div>",[array_
objectAtIndex:i]];
}
[string_
appendString:@""];
materalWebView.frame =
CGRectMake(20,490,280, [array_
count] * 40);//UIWebView *materalWebView;
[materalWebView
loadHTMLString:string_ baseURL:nil];
方法二:
#pragma mark -loaddrinkData
-(NSArray*)loadDinkInfoData
{
static
NSArray *__drinkData =
nil;
// only load the imageData array once
if (__drinkData == nil) {
// read the filenames/sizes out of a plist in the app bundle
NSString *path = [[NSBundle
mainBundle] pathForResource:@"DrinkInfoDataList"
ofType:@"plist"];
NSData *plistData = [NSData
dataWithContentsOfFile:path];
NSString *error; NSPropertyListFormat format;
__drinkData = [[NSPropertyListSerialization
propertyListFromData:plistData
mutabilityOption:NSPropertyListImmutable
format:&format
errorDescription:&error]
retain];
if (!__drinkData) {
NSLog(@"Failed to read drinkData info. Error: %@", error);
[error
release];
}
else NSLog(@"-----drink data=%@",__drinkData);
}
return __drinkData;
}
- (NSUInteger)drinkDataCount {
static
NSUInteger __count =
NSNotFound;
// only count the data once
if (__count == NSNotFound) {
__count = [[self
loadDinkInfoData]
count];
}
return __count;
}
- (NSString *)drinkNameAtIndex:(NSUInteger)index {
NSString *name = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
name = [data
valueForKey:@"name"];
}
return name;
}
- (NSArray *)drinkComponentAtIndex:(NSUInteger)index {
NSArray *_component = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
_component = [data
valueForKey:@"component"];
}
return _component;
}
- (NSString *)drinkMessageAtIndex:(NSUInteger)index {
NSString *message = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
message = [data
valueForKey:@"message"];
}
return message;
}
//image
- (UIImage *)imageAtIndex:(NSUInteger)index {
// use "imageWithContentsOfFile:" instead of "imageNamed:" here to avoid caching our images
NSString *imageName = [self
imageNameAtIndex:index];
NSString *path = [[NSBundle
mainBundle] pathForResource:imageName
ofType:@"jpg"];
return [UIImage
imageWithContentsOfFile:path];
}
- (NSString *)imageNameAtIndex:(NSUInteger)index {
NSString *imagename = nil;
if (index < [self
drinkDataCount]) {
NSDictionary *data = [[self
loadDinkInfoData] objectAtIndex:index];
imagename = [data
valueForKey:@"imagename"];
}
return imagename;
}
显然第二种方法比较整齐,但有些罗嗦。。。万变不离其中
相关文章推荐
- 加载plist文件数据的方法
- Java加载资源文件的两种方法
- VC6.0中加载库(lib、dll)文件的两种方法 .
- 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法
- oracle中数据文件移动或者改名的两种方法
- oracle rename数据文件的两种方法
- VC6.0中加载库(lib、dll)文件的两种方法
- java加载资源文件的两种方法
- 关于angular项目按需加载文件的两种方法(oclazyload&require)
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream
- oracle下的sqlldr命令使用方法(sqlldr工具的使用(批量将文本文件数据加载到数据表))
- Android手机数据读写方法(内部存储、SD卡,网络加载,包内文件读取)
- 动态加载JavaScript文件的两种方法
- java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream
- GIS二次开发-多个shp文件的加载(两种方法)
- 利用ajax实现前台javascript同c#后台MVC下的aspx.cs文件传递数据的两种方法2
- iphone开发之表格组件UITableView的使用(四) 通过加载plist文件展示单组数据
- ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
- C#实现向已存在的Excel文件中写入数据实例(两种方法)