A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2黑马币
关于这道题,为何我这样写,什么结果都没有,求解释!!!
设计一个菜单类
*一个添加菜单的对象方法
*一个删除菜单的对象方法
*还有一个打印数组中所有菜单的对象方法
main.m
  1. #import <Foundation/Foundation.h>
  2. #import "CZCarte.h"
  3. #import "CZFood.h"
  4. int main(int argc, const char * argv[]) {
  5.     @autoreleasepool {
  6.         CZCarte *carte = [CZCarte new];
  7.         CZFood *f1 = [CZFood new];
  8.         f1.name = @"酸辣土豆丝";
  9.         f1.price = 12;
  10.         f1.info =@"辣椒炒土豆";
  11.         [carte addFood:f1];
  12.         [carte printCarte];
  13.     }
  14.     return 0;
  15. }
复制代码
菜单类
CZCarte.h
  1. #import <Foundation/Foundation.h>
  2. @class CZFood;
  3. @interface CZCarte : NSObject
  4. {
  5.     NSMutableArray * _foods;
  6. }

  7. /**添加菜*/

  8. -(void) addFood:(CZFood *) food;

  9. /**删除菜*/

  10. -(void) removeFood:(CZFood *) food;

  11. /**打印菜单*/

  12. -(void) printCarte;

  13. @end
复制代码

菜单类实现
CZCarte.m
  1. #import "CZCarte.h"
  2. #import "CZFood.h"
  3. @implementation CZCarte

  4. /**添加菜*/

  5. -(void) addFood:(CZFood *) food {
  6.    
  7.     [_foods addObject:food];
  8.    
  9. }

  10. /**删除菜*/

  11. -(void) removeFood:(CZFood *) food {
  12.    
  13.     [_foods removeObject:food];
  14.    
  15. }

  16. /**打印菜单*/

  17. -(void) printCarte {
  18.    
  19.     for (CZFood *food in _foods) {
  20.         
  21.         NSLog(@"菜名:%@",[food name]);
  22.         
  23.         NSLog(@"价格:%f",[food price]);
  24.         
  25.         NSLog(@"简介:%@",[food info]);
  26.         
  27.     }
  28. }
  29. @end
复制代码

菜类
菜类里没有实现,只有声明
CZFood.h
  1. #import <Foundation/Foundation.h>

  2. @interface CZFood : NSObject
  3. @property (nonatomic,strong) NSString *name; // 菜名
  4. @property (nonatomic,assign) float price;  //价格
  5. @property (nonatomic,strong) NSString *info; // 简介

  6. @end
复制代码






10 个回复

倒序浏览
请检查for循环用的对么
回复 使用道具 举报
MuziTian 发表于 2016-3-19 21:53
请检查for循环用的对么

没有的 ,每循环一次,打印一组菜名,价格和简介。数组里有几种菜,就会打印几种
回复 使用道具 举报
278008379 来自手机 中级黑马 2016-3-21 12:46:51
板凳
现在还不会,学会后再来
回复 使用道具 举报
278008379 发表于 2016-3-21 12:46
现在还不会,学会后再来

{:2_36:}一起加油

点评

就是就是  发表于 2016-3-22 12:45
回复 使用道具 举报
forin加强这一这样用?基础版高手
回复 使用道具 举报
你没有把修改后才数据返回  试试把void 改成菜单类 ,再找个对象接收
回复 使用道具 举报
@property (nonatomic,strong) NSString *name; // 菜名 @property (nonatomic,assign) float price;  //价格 @property (nonatomic,strong) NSString *info; // 简介          这里的两个strong换成copy试试   
回复 使用道具 举报
打印的方法里用到应该是更新后对象的值,所以应该给打印的方法加一个参数,并将这个修改后的实参返回
回复 使用道具 举报
  1. /**打印菜单*/

  2. -(CZFood *) printCarte :(CZFood *) food {
  3.    
  4.     for (CZFood *food in _foods) {
  5.         
  6.         NSLog(@"菜名:%@",[food name]);
  7.         
  8.         NSLog(@"价格:%f",[food price]);
  9.         
  10.         NSLog(@"简介:%@",[food info]);
  11.         
  12.     }
  13. }
  14. @end
复制代码

这样试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马