ios-应用管理 字典转模型

增加了一个app类 两个文件app.m app.h

app.m

//
//  app.m
//  应用管理
//
//  Created by YaguangZhu on 15/7/31.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "app.h"

@implementation app

-(app *)initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        self.miaoshu = dict[@"miaoshu"];
        self.icon = dict[@"icon"];
    }
    return self;
}
+ (app *)appwithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
@end

app.h

//
//  app.h
//  应用管理
//
//  Created by YaguangZhu on 15/7/31.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface app : NSObject

@property (nonatomic,copy) NSString *miaoshu;
@property (nonatomic,copy) NSString *icon;

- (app *)initWithDict:(NSDictionary *)dict;
+ (app *)appwithDict:(NSDictionary *)dict;

@end
//
//  ViewController.m
//  应用管理
//
//  Created by YaguangZhu on 15/7/31.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "ViewController.h"
#import "app.h"

@interface ViewController ()

@property (nonatomic,strong) NSArray *apps;

@end

@implementation ViewController
- (NSArray *)apps
{
    if (_apps == nil) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];

        NSArray *array = [NSArray arrayWithContentsOfFile:path];

        NSMutableArray *arrayModels = [NSMutableArray array];

        for (NSDictionary *dict in array) {
            app *model = [app appwithDict:dict];

           // model.miaoshu = dict[@"miaoshu"];
           // model.icon = dict[@"icon"];

            [arrayModels addObject:model];
        }
        _apps =arrayModels;

    }

    return  _apps;

}

- (void)viewDidLoad {
    [super viewDidLoad];
    int colums =3;
    CGFloat viewWidth = self.view.frame.size.width;

    CGFloat appW = 75;
    CGFloat appH = 90;
    CGFloat marginTop = 30;
    CGFloat maginX = (viewWidth - colums*appW)/ (colums+1);
    CGFloat maginY = maginX;

     for (int i=0;i<self.apps.count;i++)//9 = self.apps.count
    {

        app *appModel = self.apps[i];
        UIView *appview = [[UIView alloc] init];
   // appview.backgroundColor = [UIColor redColor];
        int colIdx = i % colums;
        int rowIdx = i / colums;
        CGFloat appX = maginX+ colIdx *(appW +maginX);
        CGFloat appY = marginTop +rowIdx *(appH +maginY);
    appview.frame = CGRectMake(appX, appY, appW, appH);

    [self.view addSubview:appview];
        // 增加子控件
        UIImageView *imgViewIcon = [[UIImageView alloc]init];
       // imgViewIcon.backgroundColor = [UIColor blueColor];
        CGFloat iconW = 45;
        CGFloat iconH =45;
        CGFloat iconX = (appview.frame.size.width- iconW) *0.5;
        CGFloat iconY = 0;
        imgViewIcon.frame = CGRectMake(iconX, iconY, iconW, iconH);

        [appview addSubview:imgViewIcon];
        imgViewIcon.image = [UIImage imageNamed:appModel.icon];

        UILabel *lblName = [[UILabel alloc] init];
        //lblName.backgroundColor = [UIColor yellowColor];
        CGFloat nameW = appview.frame.size.width;
        CGFloat nameH = 20;
        CGFloat nameY= iconH;
        CGFloat nameX = 0;
        lblName.frame = CGRectMake(nameX, nameY, nameW, nameH);
        [appview addSubview:lblName];

        UIButton *btnDowload = [[UIButton alloc] init];
        btnDowload.backgroundColor = [UIColor blackColor];
        lblName.text = appModel.miaoshu;
        lblName.font = [UIFont systemFontOfSize:14];
        lblName.textAlignment = NSTextAlignmentCenter;

        CGFloat btnW =iconW;
        CGFloat btnH = 20;
        CGFloat btnX = iconX;
        //CGFloat btnY = nameY + nameH;
        CGFloat btnY = CGRectGetMaxY(lblName.frame);
        btnDowload.frame = CGRectMake(btnX, btnY, btnW, btnH);
        [appview addSubview:btnDowload];
        [btnDowload setTitle:@"xia zai" forState:UIControlStateNormal];
        [btnDowload setTitle:@"finsh" forState:UIControlStateHighlighted];
        [btnDowload setBackgroundImage:[UIImage imageNamed:@"12"] forState:UIControlStateNormal];
        [btnDowload setBackgroundImage:[UIImage imageNamed:@"10"] forState:UIControlStateHighlighted];
        btnDowload.titleLabel.font = [UIFont systemFontOfSize:14];

        //按钮的单击事件
        [btnDowload addTarget:self action:@selector(btnDownClick) forControlEvents:UIControlEventTouchUpInside];

    }

}
- (void)btnDownClick
{
    NSLog(@"ssss");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
时间: 2024-12-25 09:57:33

ios-应用管理 字典转模型的相关文章

iOS应用管理(字典转模型)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 } span.s1 { } 1. 新建appViewModel 1.1声明需要的属性 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Me

iOS之KVC字典转模型的底层实现

KVC: Key Value Coding (键值编码) 在iOS开发中,KVC是我们经常要使用的技术.那么KVC有什么作用呢?简单列举一下下面几种: 取值和赋值(开发中基本不用) 获取对象私有变量的值.(经常使用,例如UIPageContorl分页, 设置圆点为图片) 改变对象私有变量的值(经常使用) 简单的字典转模型(偶尔使用) 模型转字典 批量取值 KVC字典转模型的底层实现 通常我们手动将字典转模型的话,会在模型中提供一个类方法接收一个字典,在这个方法中将字典转换成模型,再将转换好的模型

【IOS问题】字典转模型,属性个数不匹配问题

一.字典转模型的键值对与模型属性不匹配问题 1. 字典的键个数 < 模型的属性个数 (key 能与模型的属性匹配) 1> .KVO 方式: - setValuesForKeysWithDictionary: 2> for循环的方式,一一赋值 2.字典的键个数 = 模型的属性个数 (key 能与模型的属性匹配) 同1. 3.字典的个数 > 模型的属性个数 (模型的属性为字典key 的其中一部分) 一共有三种解决方式 二.解决办法: 建立一个GXApp的模型,申明两个属性: name(

IOS中级篇 —— 字典转模型

@property (nonatomic, copy) NSString *icon;@property (nonatomic, copy) NSString *name; -(instancetype) initWithDic:(NSDictionary *)dic; +(instancetype) appViewWithDic:(NSDictionary *)dic; -(instancetype)initWithDic:(NSDictionary *)dic{ ?? if ([super

iOS开发UI篇—字典转模型

iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 // // LFViewController.m // 03-应用管理 // // Created by apple on 14-5-22. // Copyright (c) 2014年 heima. All rights reserved. // #import "LFViewController.h" @interface LFViewController () @proper

文顶顶 iOS开发UI篇—字典转模型

iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyright (c) 2014年 heima. All rights reserved. 7 // 8 9 #import "LFViewController.h" 10 11 @interface LFV

iOS开发UI基础—字典转模型(部分内容转载他人)

iOS开发UI基础-字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组来创建一个模型数组等等. 一.能完成功能的"问题代码" 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyrigh

iOS中实现plist中读取数据实现Cell的显示(字典转模型,实现按序分组)修改图片的尺寸

RootViewController.m #import "RootViewController.h" #import "UIImage+UIImageScale.h" @interface RootViewController ()<UITableViewDataSource,UITableViewDelegate> @property (nonatomic, retain) NSArray *apps; //存放排好序的keys @property

IOS开发UI基础之Plis文件-字典转模型

什么是plist文件? 在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低 因此,可以考虑将经常变的数据放在?文件中进?行存储,程序启动后从?文件中 读取最新的数据.如果要变动数据,直接修改数据?文件即可,不?用修改代码 一般可以使?用属性列表?文件存储NSArray或者NSDictionary之类的数据,这 种“属性列表?文件”的扩展名是plist,因此也称为“plist?文件” 在Xcode创建plist文件的步骤: 解析