【问题标题】:How To do json type Response?如何做 json 类型的响应?
【发布时间】:2019-04-23 17:24:16
【问题描述】:

我有一个集合视图,我必须显示来自后端的图像和视频

SliderList =     (
            {
        SliderID = 1;
        SliderType = 1;
        SliderURL = "http://mca.bananaappscenter.com/Images/SliderImages/MaskGroup2.png";
        Status = 1;
    },
            {
        SliderID = 2;
        SliderType = 1;
        SliderURL = "http://mca.bananaappscenter.com/Images/SliderImages/MaskGroup3.png";
        Status = 1;
    },
            {
        SliderID = 3;
        SliderType = 2;
        SliderURL = "https://www.youtube.com/watch?v=l1yN0KUHgoc";
        Status = 1;
    }
);
}

我确实喜欢这个

 NSMutableDictionary *sampleDict = [ImagesArray objectAtIndex:indexPath.row];
    NSString *imageStr = [[NSString alloc]init];
    imageStr = [sampleDict valueForKey:@"SliderURL"];

    if([imageStr isEqualToString:@"1"] || imageStr == nil)
    {
        cell.addImageView.image = [UIImage imageNamed:@""];
    }
    else
    {
        [cell.addImageView sd_setImageWithURL:[NSURL URLWithString:imageStr]
                                placeholderImage:[UIImage imageNamed:@"default"]];`
    }

上面只有图片来了。如果有任何答案,将不胜感激。提前致谢。

【问题讨论】:

  • 请添加附加代码
  • if(requestType == RequestTypeHomeSlider) { NSLog(@"%@",responseObject); NSString *respCode =[NSString stringWithFormat:@"%@", [responseDict valueForKey:@"StatusCode"]]; if([respCode isEqualToString:@"200"]) { ImagesArray= [NSMutableArray new]; ImagesArray = [responseObject valueForKey:@"SliderList"]; [_imageCollectionView 重载数据]; }
  • 请添加附加代码
  • 嗨@karthik 你想要哪个代码?请告诉我
  • 与您的collectionview代码相关或在您的问题中添加整个类代码

标签: ios objective-c image video uicollectionview


【解决方案1】:

我的问题得到了答案,谢谢每一位回复我的人

 if ([ImagesArray[indexPath.row][@"SliderType"] intValue]==1) {

                NSString *imageStr=ImagesArray[indexPath.row][@"SliderURL"];

                [cell.addImageView sd_setImageWithURL:[NSURL URLWithString:imageStr]
                                         placeholderImage:[UIImage imageNamed:@"default"]];

                }else if ([ImagesArray[indexPath.row][@"SliderType"] intValue]==2) {

                    NSString *imageStr=ImagesArray[indexPath.row][@"SliderURL"];
                    [cell.addImageView sd_setImageWithURL:[NSURL URLWithString:imageStr]
                                         placeholderImage:[UIImage imageNamed:@"VideoButton"]];

                }

【讨论】:

    【解决方案2】:

    据我从问题和您对聊天的扩展讨论中了解到,您在单元格中显示视频和图像时遇到了麻烦。为了显示视频和图像,您需要使用不同的方法。

    • 您需要做的第一件事是确定这是视频 URL 还是图像。最好的方法是通过在您的网络服务中添加一个参数来区分这是图像还是视频。
    • 一旦退出系统,您将需要一个可以完美加载视频的特殊视图,我使用过 this library,它工作正常。
    • 现在在您的单元格中同时添加imageView 和视频播放器视图,并添加一个条件来检查它是否是视频,然后根据返回的信息显示YTPlayerView 或imageView。

    然后在这些功能的帮助下,您可以在播放器视图上加载视频:

    + (NSString *)extractYoutubeIdFromLink:(NSString *)link {
        if (link == nil) nil;
    
        NSString *regexString = @"((?<=(v|V)/)|(?<=be/)|(?<=(\\?|\\&)v=)|(?<=embed/))([\\w-]++)";
        NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:regexString
                                                                                options:NSRegularExpressionCaseInsensitive
                                                                                  error:nil];
    
        NSArray *array = [regExp matchesInString:link options:0 range:NSMakeRange(0,link.length)];
        if (array.count > 0) {
            NSTextCheckingResult *result = array.firstObject;
            return [link substringWithRange:result.range];
        }
        return nil;
    }
    
    
    //Write this line on your function where you want to load video
    [_videoView loadWithVideoId:[SCUtility extractYoutubeIdFromLink:_videoURL]];
    

    【讨论】:

      【解决方案3】:

      我已经在 swift lang 中添加了代码。你可以参考并在那里应用相同的逻辑。它会工作

         let ImagesArray =     [
          [
              "SliderID" : 1,
              "SliderType" : 1,
              "SliderURL" : "http://mca.bananaappscenter.com/Images/SliderImages/MaskGroup2.png",
              "Status" : 1
          ],
          [
              "SliderID" : 2,
              "SliderType" : 1,
              "SliderURL" : "http://mca.bananaappscenter.com/Images/SliderImages/MaskGroup3.png",
              "Status" : 1
          ],
          [
              "SliderID" : 3,
              "SliderType" : 2,
              "SliderURL" : "https://www.youtube.com/watch?v=l1yN0KUHgoc",
              "Status" : 1
          ]
          ]
      

      在tableview cellforrow中你可以这样实现:

          let sampleDict = ImagesArray[indexPath.row] as? NSDictionary
          let SliderURL = sampleDict.valueForkey("SliderURL") as? String
           let SliderType = sampleDict.objectForkey("SliderType") as? NSNumber
      
          if SliderURL != nil{
              //means url abvl
              if SliderType == 2{
                  //video data
                  cell.addImageView.image = "set video default thumbnail image "
      
              }else if SliderType == 1{
                  //imagedata
                 // cell.addImageView.image = "set ur image "
              }
          }
      

      在目标 C 中

          NSMutableDictionary *sampleDict = [ImagesArray objectAtIndex:indexPath.row];
      NSString *imageStr = [[NSString alloc]init];
      imageStr = [sampleDict valueForKey:@"SliderURL"];
      

      // NSString * SliderType = [[NSString alloc]init]; // SliderType = [sampleDict valueForKey:@"SliderType"];

       int SliderType = [[sampleDict valueForKey:@"SliderType"] integerValue];
        NSLog(@"%i", SliderType);
      
      if(imageStr != nil)
      {
      
         //if([SliderType isEqualToString:@"2"]
          if [SliderType isEqualToNumber:[NSNumber numberWithInt:2]] {
      
          cell.addImageView.image = [UIImage imageNamed:@"default"];
      
        }else if [SliderType isEqualToNumber:[NSNumber numberWithInt:1]] {
      
        [cell.addImageView sd_setImageWithURL:[NSURL URLWithString:imageStr]
                                  placeholderImage:[UIImage imageNamed:@"default"]];`
        }else{
            //nothng
        }
      }
      else
      {
          //SliderURL is nil
      }
      

      【讨论】:

      • 你的 SliderType 数据是数字类型的。首先获取数字/Int 类型
      • int SliderType = [sampleDict[@"SliderType"] integerValue];
      猜你喜欢
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多