AppDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
AppDelegate.m
#import "AppDelegate.h"
#import "RootViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (void)dealloc
{
[_window release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
[_window release];
RootViewController *rootVC = [[RootViewController alloc] init];
UINavigationController *naVC = [[UINavigationController alloc] initWithRootViewController:rootVC];
self.window.rootViewController = naVC;
[rootVC release];
[naVC release];
return YES;
}
RootViewController.h
#import <UIKit/UIKit.h>
@interface RootViewController : UIViewController
@end
RootViewController.m
#import "RootViewController.h"
#import "Student.h"
#import "Movie.h"
#define WIDTH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height
@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate>
@property(nonatomic, retain)UITableView *tableView;
@property(nonatomic, retain)NSMutableArray *stuArr;
@end
@implementation RootViewController
- (void)dealloc
{
[_stuArr release];
[_tableView release];
[super dealloc];
}
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self createData];
}
return self;
}
//- (void)createData {
// NSString *path = [[NSBundle mainBundle] pathForResource:@"Students" ofType:@"plist"];
// NSMutableArray *arr = [NSMutableArray arrayWithContentsOfFile:path];
// self.stuArr = [NSMutableArray array];
// for (NSDictionary *dic in arr) {
// Student *stu = [[Student alloc] init];
// // 字典根据key和属性里的属性名进行比对, 如果一样, 就把对应的value赋值给属性
// [stu setValuesForKeysWithDictionary:dic];
// [self.stuArr addObject:stu];
// [stu release];
// }
// for (Student *stu in self.stuArr) {
// NSLog(@"%@", stu.name);
// }
//}
- (void)createData {
NSString *path = [[NSBundle mainBundle] pathForResource:@"movielist" ofType:@"txt"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", dic);
// 先解析一层数据
NSArray *arr = dic[@"result"];
// 容器使用前一定要初始化
self.stuArr = [NSMutableArray array];
for (NSDictionary *dic in arr) {
Movie *movie = [[Movie alloc] init];
[movie setValuesForKeysWithDictionary:dic];
[self.stuArr addObject:movie];
[movie release];
for (Movie *movie in self.stuArr) {
NSLog(@"~~~%@", movie.movieName);
}
}
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor whiteColor];
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT) style:UITableViewStylePlain];
[self.view addSubview:self.tableView];
[self.tableView release];
self.tableView.dataSource = self;
self.tableView.delegate = self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *reuse = @"reuse";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuse];
}
Movie *movie = self.stuArr[indexPath.row];
cell.textLabel.text = movie.movieName;
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.stuArr.count;
}
Movie.h
#import <Foundation/Foundation.h>
@interface Movie : NSObject
@property(nonatomic, copy)NSString *movieId;
@property(nonatomic, copy)NSString *movieName;
@property(nonatomic, copy)NSString *pic_url;
@end
Movie.m
#import "Movie.h"
@implementation Movie
- (void)dealloc
{
[_movieId release];
[_movieName release];
[_pic_url release];
[super dealloc];
}
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}
@end
Student.h
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property(nonatomic, copy)NSString *name;
@property(nonatomic, copy)NSString *address;
@property(nonatomic, copy)NSString *age;
@property(nonatomic, copy)NSString *hobby;
@property(nonatomic, copy)NSString *phone;
@property(nonatomic, copy)NSString *sex;
@end
Student.m
#import "Student.h"
@implementation Student
- (void)dealloc
{
[_address release];
[_name release];
[_sex release];
[_age release];
[_phone release];
[super dealloc];
}
//- (void)setValue:(id)value forKey:(NSString *)key {
// NSLog(@"%@", key);
//}
// kvc提供的一个容错的方法, 只要key和属性对应不上, 自动调用这个方法, 什么都不写就可以
// 需要注意的是, 方法是forUndefinedKey, 注意不要使用错方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
NSLog(@"111111111%@", key);
}
@end
Students.plist
movielist.txt