7-2作业储存的问题

7-2作业储存的问题

下面是watchvideo.m 的全部代码,userVideo==3的部分是实现添加movies的功能的,但是添加后还是为空,麻烦帮忙看下是哪里出了问题,谢谢~~~



#import "watchVideo.h"




@implementation watchVideo



-(void)watchvideo:(gobackBlock)block{


  NSLog(@"**********观看ios学习视频界面**********");

  NSLog(@"请输入要选择的功能");

  NSLog(@"1 查询所有iOS视频");

  NSLog(@"2 通过ID选择播放某一iOS视频");

  NSLog(@"3 添加一个新的iOS视频");

  NSLog(@"4 删除某一iOS视频");

    char video[1000];

    scanf("%s",video);

    NSString * uservideo = [NSString stringWithUTF8String:video];

    int userVideo = uservideo.intValue;

    watchVideo *ww1=[[watchVideo alloc]init];

    NSLog(@"当前的movies%@",ww1.movies);

    NSArray *movieskeys = [ww1.movies allKeys];

    if (userVideo==1){

        if (movieskeys.count==0){

            NSLog(@"视频为空");

            NSLog(@"观看ios学习视频中...");

            block();

            }

        else{    //        如果movies有信息,需要打印出来

        

            for(int i=0;i<movieskeys.count;i++){

                NSString * moviename = [ww1.movies valueForKey:[movieskeys objectAtIndex:i]];

                NSString * movieid =[movieskeys objectAtIndex:i];

                NSLog(@"视频ID:%@  视频名称:%@",movieid,moviename);

            

            }

            

            

        }

        

}

    if (userVideo==2){

        NSLog(@"请输入需要观看的视频ID");

        char videoid[1000];

        scanf("%s",videoid);

        NSString * inputvideoid = [NSString stringWithUTF8String:videoid];

        if([movieskeys containsObject:inputvideoid]){ //检查输入的id是否在id的数组中

            NSString * moviename2 =[ww1.movies valueForKey:inputvideoid];

        NSLog(@"视频ID:%@  视频名称:%@",inputvideoid,moviename2 );

            NSLog(@"观看ios学习视频中...");

            block();

            

        }

        else{ //输入id不存在

            

            NSLog(@"您查找的视频不存在");

            NSLog(@"观看ios学习视频中...");

            block();

        }

    }

    if (userVideo==3){// 实现字典添加的功能

        NSLog(@"请输入要添加的视频名称");

        char advideoname[1000];

        scanf("%s",advideoname);

        NSString * addvideoname= [NSString stringWithUTF8String:advideoname];

        

        NSLog(@"请输入要添加的视频ID  ID不能重复");

        char advideoid[1000];

        scanf("%s",advideoid);

        NSString * addvideoid= [NSString stringWithUTF8String:advideoid];

        [ww1.movies setValue:addvideoname forKey:addvideoid];

        NSLog(@"添加后的movies%@",ww1.movies);

        NSLog(@"观看ios学习视频中...");

        block();

    }

    if (userVideo==4){

        

        NSLog(@"请输入要删除的视频名称");

        char removevideo[1000];

        scanf("%s",removevideo);

        NSString * removevideoid= [NSString stringWithUTF8String:removevideo];

        [ww1.movies removeObjectForKey:removevideoid];

        NSLog(@"删除成功");

        NSLog(@"观看ios学习视频中...");

        block();

        

    }

}

@end




正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
Tender10 2017-11-22 15:36:38

在存储的时候代码这么去写,如下所示:在存储之前,加一个初始化的代码就可以了。

self.movies = [NSMutableDictionary dictionary];
[self.movies setValue:addvideoname forKey:addvideoid];



  • 提问者 慕姐8144525 #1
    这样存储可以成功了,但是存储完跳到上个blokc里面,再调用self.movies的时候又变成空了。。。 NSLog(@"当前的movies%@",self.movies); NSArray *movieskeys = [self.movies allKeys]; 这里又现实为null了。。。 怎么办呢?
    2017-11-22 15:46:48
  • Tender10 回复 提问者 慕姐8144525 #2
    个人建议啊,不要这样去写,流程性和代码利用率不高,可以将查询、添加、这样都写在各自的方法中,当需要使用的时候,通过调用方法就可以了。
    2017-11-22 17:02:06
  • 提问者 慕姐8144525 回复 Tender10 #3
    有没有参考答案可以看呀?感觉越弄越乱。。。
    2017-11-22 19:30:12
提问者 慕姐8144525 2017-11-22 15:20:27

我按照这个方法修改了,全都改成self.movies 在储存之后的nslog 也还是null。 下面是watchvideo.h 和修改后的.m , 麻烦再帮忙看下

watchvideo.h:

#import <Foundation/Foundation.h>

typedef void (^gobackBlock)();

typedef void (^logBlock) (NSString*userName,NSString * userCode);

@interface watchVideo : NSObject

@property(nonatomic,strong)NSMutableDictionary *movies;


-(void)watchvideo:(gobackBlock)block;

@end

修改后的watchvideo.m:


#import "watchVideo.h"




@implementation watchVideo



-(void)watchvideo:(gobackBlock)block{


  NSLog(@"**********观看ios学习视频界面**********");

  NSLog(@"请输入要选择的功能");

  NSLog(@"1 查询所有iOS视频");

  NSLog(@"2 通过ID选择播放某一iOS视频");

  NSLog(@"3 添加一个新的iOS视频");

  NSLog(@"4 删除某一iOS视频");

    char video[1000];

    scanf("%s",video);

    NSString * uservideo = [NSString stringWithUTF8String:video];

    int userVideo = uservideo.intValue;

    NSLog(@"当前的movies%@",self.movies);

    NSArray *movieskeys = [self.movies allKeys];

    if (userVideo==1){

        if (movieskeys.count==0){

            NSLog(@"视频为空");

            NSLog(@"观看ios学习视频中...");

            block();

            }

        else{    //        如果movies有信息,需要打印出来

        

            for(int i=0;i<movieskeys.count;i++){

                NSString * moviename = [self.movies valueForKey:[movieskeys objectAtIndex:i]];

                NSString * movieid =[movieskeys objectAtIndex:i];

                NSLog(@"视频ID:%@  视频名称:%@",movieid,moviename);

            

            }

            

            

        }

        

}

    if (userVideo==2){

        NSLog(@"请输入需要观看的视频ID");

        char videoid[1000];

        scanf("%s",videoid);

        NSString * inputvideoid = [NSString stringWithUTF8String:videoid];

        if([movieskeys containsObject:inputvideoid]){ //检查输入的id是否在id的数组中

            NSString * moviename2 =[self.movies valueForKey:inputvideoid];

        NSLog(@"视频ID:%@  视频名称:%@",inputvideoid,moviename2 );

            NSLog(@"观看ios学习视频中...");

            block();

            

        }

        else{ //输入id不存在

            

            NSLog(@"您查找的视频不存在");

            NSLog(@"观看ios学习视频中...");

            block();

        }

    }

    if (userVideo==3){// 实现字典添加的功能

        NSLog(@"请输入要添加的视频名称");

        char advideoname[1000];

        scanf("%s",advideoname);

        NSString * addvideoname= [NSString stringWithUTF8String:advideoname];

        

        NSLog(@"请输入要添加的视频ID  ID不能重复");

        char advideoid[1000];

        scanf("%s",advideoid);

        NSString * addvideoid= [NSString stringWithUTF8String:advideoid];

        [self.movies setValue:addvideoname forKey:addvideoid];

        NSLog(@"添加后的movies%@",self.movies);

        NSLog(@"观看ios学习视频中...");

        block();

    }

    if (userVideo==4){

        

        NSLog(@"请输入要删除的视频名称");

        char removevideo[1000];

        scanf("%s",removevideo);

        NSString * removevideoid= [NSString stringWithUTF8String:removevideo];

        [self.movies removeObjectForKey:removevideoid];

        NSLog(@"删除成功");

        NSLog(@"观看ios学习视频中...");

        block();

        

    }

}

@end



Tender10 2017-11-22 15:09:51

1、watchVideo *ww1=[[watchVideo alloc]init];这个代码不要了。

2添加视频的时候[ww1.movies setValue:addvideoname forKey:addvideoid];直接写成[self.movies setValue:addvideoname forKey:addvideoid];即可

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
iOS入门:基础语法与常用控件
  • 参与学习       1337    人
  • 提交作业       712    份
  • 解答问题       1878    个

很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师