Как сделать ответ типа json? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть одно представление коллекции, в котором я должен показать изображения и видео, поступающие из бэкэнда. Я очень новичок в этом, я получаю этот ответ от бэкэнда.

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"]];`
    }

только для изображений выше.если какой-либо ответ будет оценен.Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Я добавил код в быстром 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 "
        }
    }

В Objective 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
}
0 голосов
/ 21 ноября 2018

Я получил ответ на мой вопрос, спасибо всем, кто ответил мне

 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"]];

                }
0 голосов
/ 21 ноября 2018

Как я понял из вопроса и вашего расширенного обсуждения в чате, вы столкнулись с проблемой показа видео в ячейке вместе с изображениями.Чтобы показать видео вместе с изображением, вам нужно будет использовать другой подход.

  • Первое, что вам нужно сделать, это выяснить, является ли это URL-адрес видео или изображение.Лучший способ сделать это - отделить это, добавив в ваш веб-сервис параметр, который указывает, является ли это изображение или видео.
  • После выхода из системы вам потребуется специальный просмотр, который может загрузитьвидео отлично, я использовал эту библиотеку , и она отлично работает.
  • Теперь в вашей ячейке добавьте и 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]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...