7-2作业问题

7-2作业问题

2、功能实现方面

(1)因为在检测添加视频功能时,会出现添加第二个视频覆盖了第一个视频。

原因:因为字典是全局变量,所以每次都调用该字典去存储视频的ID和名称。然后总是将该字典添加到数组中,所以会造成数据覆盖。

解决方法:将字典定义的全局变量注释,存储视频名称和ID的时候就用局部变量定义字典,然后紧接着就将该字典作为一个对象存储到数组中。这样就能够避免数据被覆盖的情况。

麻烦助教大大用代码给我解释下老师说的解决方法

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

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

1回答
Tender10 2017-07-27 15:24:20

添加视频的代码可以如下所示:其中videoArray是一个可变数组,并且定义的是一个全局变量。

-(void)addVideo{
    NSLog(@"请输入要添加的视频名称 \n");
    char buffer[1000];
    scanf("%s",buffer);
    NSString * name = [NSString stringWithUTF8String:buffer];
    
    NSLog(@"请输入要添加的视频ID ID不能重复 \n");
    scanf("%s",buffer);
    NSString * key = [NSString stringWithUTF8String:buffer];
    // 这里将名称和ID存入到可变字典中
    NSMutableDictionary *item = [[NSMutableDictionary alloc]initWithObjectsAndKeys:name,key, nil];
    // 再将这整个信息作为一个元素存入到存放时频的数组中
    [videoArray addObject:item];
}

后面在查询的时候可以先从数组中遍历出每个字典对象,然后在通过遍历取出字典所有的key,然后在将用户输入的key与字典中之前保存的key进行比较,如果相同那么就通过这个key取出对应的视频名称。查询视频的操作如下所示:

-(void)quaryallVideo{
    if (videoArray.count == 0) {
        NSLog(@"视频为空");
        return;
    }
    for (NSMutableDictionary *item in videoArray) {
        if (item.allKeys.count != 0) {
            for (NSString *key in item.allKeys) {
                NSString *value = [item objectForKey:key];
                NSLog(@"视频ID:%@ 视频名称:%@",key,value);
            }
        }else{
            NSLog(@"视频为空");
        }
    }

}


  • _小怪 #1
    老师你解答在图片二中的 item.allKeys.count != 0 其中item是属于可变字典的,是不是可变字典的Key和键值都是属于数组吗?所以可以直接使用 .count . 可是我看老师讲的用法 是 [dic4 allKeys].count 为啥没有中括号呢?
    2017-11-09 21:08:27
  • Tender10 回复 _小怪 #2
    首先for (NSMutableDictionary *item in videoArray)这个是从数组中遍历出数组中存储的字典,然后item其实就是字典的意思,而item.allKeys是取出字典中所有的key,其实item.allKeys和[dic4 allKeys]都是一样的,都能取出key值,因为点语法和中括号语法都是可以调用这个属性的啊。
    2017-11-10 09:46:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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