IOS项目:疯狂食材软件总结

最近,刚做完了一个经典的项目:疯狂食材。
首先先看一下软件设计的几个界面:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
此项目对本人来说是第一个真正意义上的项目,因为该项目是一个完全由本人独立完成的第一个项目,让我正在了解了从拿到一个项目起到到结束一个项目应该经历那些流程,虽然之前和好友做过账上速记的记账项目,但那时因为合作的关系,本人只负责里面的一部分功能,因此没有此次的体会深刻。
在一个比较完善的项目中,网络请求是必不可少的,而疯狂食材这个项目正是建立在网络请求这个基础上的,所以,整个项目下来,本人的体会就只有一个,那就是:软件布局–>数据请求–>显示数据。我想,这也是每个网络项目都必须经历的流程。说白了,软件的开发也是如此,我们程序员所要做的无非就是这些。
好了,废话不多说,以下就是对疯狂食材项目的一些总结:
(1):项目规划非常重要
<1>刚拿到疯狂食材这个项目时,真的没有多想,着手就做。当时就想着每天想写就写,虽然规定了大概的完成时间,当由于没有规划每天的任务,所以最后还是赶工完成的。所以通过这个项目,我清晰的认识到了计划的重要性,做任何事情都要有规划,当然软件设计也一样。
(2)项目详细设计
以下为本人软件设计的整个结构目录:
这里写图片描述
在开发过程中,建立相对应的文件夹来管理代码文件是非常重要的。
首先项目开始的时候,先要使用cocoapods导入你要用到的第三方类库,本次项目所要用到的第三方类库如下:
AFNetWorking:用于网络的异步请求
SDWEBImage:用于异步加载的图片和本地缓存加载的图片
FXBlurView:实现毛玻璃的效果
FMDB:用于数据库的处理
libWeChatSDK:用于微信分享
以下两个第三方类库,是在code4app或github下载,直接拖拽到项目的:
MBProgressHUD:菊花加载器
DBSphereTagCloud:实现地球的3D选择效果
1.常用的功能封装成工具类
<1>因为疯狂食材是基于网络请求的基础上的,所以每个页面都离不开网络请求,那么既然如此,我们就应该封装一个类,里面提供请求的方法,以下是本次项目中封装的网络请求方法:

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, NetTYpe) {
    SuccessType, //成功
    FailedType, //失败
    NotNetTYpe //没有网络
};

typedef void(^CallBakc)(NSDictionary *dict,NetTYpe type);

@interface NetWork : NSObject

+ (void)netWorkWithPath:(NSString *)path params:(NSDictionary *)params connectHandel:(CallBakc)callback;

+ (NSDictionary *)netWorkWithPath:(NSString *)path;

@end

在网络请求中,本人使用了一个第三方类库进行处理,那就是AFNetWorking 。当然,在本次项目中,本人不仅仅是封装了这个工具类,还有以下一些工具类:
DataBaseTool.h:用于数据库的操作
NetWork:用于网络的操作
ArrayTool:对于数组的一些处理
ImageTool:对于图片的一些处理
以上的一些工具类,全都放在一个Tools文件夹,方便项目的管理,当然这个Tools文件夹是虚拟的,在实际中并不存在。
2.布局过程中要学会使用xib和代码结合,从而实现快速的布局
<1>.在疯狂食材的项目中,基本上都是使用tableView布局的界面,既然是使用到表视图,那么就肯定会涉及到自定义cell,如果tableView中的布局是固定不变的,我们就应该选择xib进行快速的布局,而对于动态变换的布局,我们应该使用代码的方式自定义cell。当然,这只是我从项目中的体会罢了。
3.善于利用UITableViewControoler
<1>在疯狂食材这个项目中,有很多页面都是由tableView直接布局的,可以直接利用UITableViewControoler控制器,从而省略大量的重复代码。
4.字典转模型
<1>对于网络请求返回JSON或者是XML的数据,为了方便管理,我们可以定义一些模型去接受,同时应该在模型中提供两个初始化的方法:

- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)datasWithDict:(NSDictionary *)dict;

以适应不同的使用习惯。
5.建立pch文件
<1>在整个项目中应该建立一个pch文件,里面应该导入一些常用的头文件和定义一些宏。
6.因使控制器页面的代码精炼
在疯狂食材中,使用最多的就是在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中返回cell,如果cell中有太多的数据要处理,就会增加控制器的代码量,这是我们可以在自定义cell中添加一个模型属性,并且在重写该属性的setter方法,在setter方法中为cell赋值,从而减少控制器中的代码量,疯狂食材中的某个页面代码如下:

 NurTableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:NurID forIndexPath:indexPath];   //实例化一个cell
        NutritionDesciption *contentModel = self.dataSources[indexPath.section];
        ContentModel *model = contentModel.content[indexPath.row];  //得到一个model
        cell.model = model;    //为cell设置一个model
        return cell;

当然,这只是我的一些心得罢了。
在疯狂食材的错误过程中,本人也遇到过许许多多的问题,但最后发现大部分都是一些小问题,所以,在开发过程中不要害怕出错,只有在错误中我们在能学到更多,在改正错误中才能进步的更快。
最后,再来一句总结:开发软件的过程中,细节处理真的很重要,它将决定用户对软件的体验效果。所以,在开发过程中,一定要处理好软件的细节处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值