关于作业7-2

关于作业7-2

我在function中设置了一个block,在watchvideo中走到一些步骤可以回到functionblock。

但我的问题是,我给所有的电影名字设置了一个字典movies,在第三个功能添加movies后,我发现movies仍然为空。请问如何设置一个变量,在这些步骤跳转的时候不会影响到这个dictionary的变量(我尝试在watchvideo方法内初始化这个变量,但是这样做每次调用这个方法,好像都会重新初始化一遍。。。。)

http://img1.sycdn.imooc.com//climg/5a140b4c000189ac25601440.jpg

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

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

4回答
提问者 慕姐8144525 2017-11-22 11:12:00

下面是我创建这个属性,然后调用的两段代码。第一次输入1,查看所有视频是为空,返回上一级的block, 然后再输入3,给字典加入了新的value 和 key 返回上一级的block,再输入1,查看所有视频还是为空,现在不知道怎么解决这个问题


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

    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==3){// 实现字典添加的功能

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

        char videoname[1000];

        scanf("%s",videoname);

        NSString * addvideoname= [NSString stringWithUTF8String:videoname];

        

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

        char videoid[1000];

        scanf("%s",videoid);

        NSString * addvideoid= [NSString stringWithUTF8String:videoid];

        

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

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

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

        block();

    }

  • 在存储到字典的那个地方,通过NSLog输出语句打印一下字典,看看存值的时候是否成功了。
    2017-11-22 14:14:39
  • 提问者 慕姐8144525 回复 Tender10 #2
    没有成功,为啥呀??输出结果如下: 2017-11-22 14:22:28.452569 iosStudy[3470:622288] 当前的movies(null) 2017-11-22 14:22:28.452607 iosStudy[3470:622288] 请输入要添加的视频名称 22332 2017-11-22 14:22:31.861582 iosStudy[3470:622288] 请输入要添加的视频ID ID不能重复 1 2017-11-22 14:22:32.874270 iosStudy[3470:622288] 添加后的movies(null) 2017-11-22 14:22:32.874302 iosStudy[3470:622288] 观看ios学习视频中...
    2017-11-22 14:23:20
  • Tender10 回复 提问者 慕姐8144525 #3
    为null的话,说明存储的环节就除了问题,以后在遇到这样的问题的时候,可以先检测是否正确存储了,如果正确了,再去检测取值的环节。你现在将你存储过程的代码检验一下,或者把存储的相关代码贴在一个新的问答里吧。
    2017-11-22 14:36:59
提问者 慕姐8144525 2017-11-22 10:49:01

我在.h文件中声明了 字典movies, 然后就懵逼了,这个属性是像之前的age一样,先实例化,然后给这个实例添加属性么? 麻烦帮忙看下哈~~~

@property(nonatomic,strong)NSMutableDictionary *movieshttp://img1.sycdn.imooc.com//climg/5a14e59400018a5225601440.jpg

  • 你就像使用属性一样去调用即可,主要我不知道你现在面临的问题是什么,使用到这个字典的地方,你就用这个属性去存储就可以了。
    2017-11-22 11:04:05
提问者 慕姐8144525 2017-11-21 19:52:33

两个问题哈,第一个,怎么设置全局变量?

第二个,为什么不能把movies 设置成全局变量?

  • 设置全局变量的话,可以在.h文件中通过@property(nonatomic,strong)NSMutableArray *movies;这样去定义。也可以设置movies,看你喜欢什么样的存储方式。
    2017-11-22 09:51:16
Tender10 2017-11-21 19:22:00

你可以在添加一个全局变量的数组,将字典直接保存到这个数组中,后面通过遍历数组先取出所有的字典,再根据对应的key值取出value即可。

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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