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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值