2017-10-19 119 views
0

我有SWIFT代碼,我在其中映射了一組列表,其中1個列表是int列表,並且它們按降序映射。這是我的SWIFT代碼...在顫動/飛鏢中映射多個列表?

class Video 
{ 
    let videoID: String 
    let rank: Int 
    let title: String 
    let imageString: String 

    init(videoID: String, rank: Int, title: String, imageString: String) 
    { 
     self.videoID = videoID 
     self.rank = rank 
     self.title = title 
     self.imageString = imageString 
    } 
} 

var videos = [Video]() 

videos.sort { $0.rank < $1.rank } 

self.vidTitleArray = videos.map { $0.title } 
self.vidRankArray = videos.map { $0.rank } 
self.vidIdArray = videos.map { $0.videoID } 
self.vidImageArray = videos.map { $0.imageString } 

這是我在撲哪裏,但我得到的錯誤前進......

class videos{ 
    String videoId; 
    int rank; 
    String title; 
    String imageString; 

    videos(this.videoId, this.rank, this.title, this.imageString); 
} 

我如何做一個list從類構造函數然後重新排列所有元素降序排列映射到?

***** OPTION *****

這是我不使用Video類代碼。我得到它排名正確使用SplayTreeMap但如果Value永遠是相同的,它只會帶回1個節點。有沒有辦法映射所有4個地圖降序Value

Map myMap = event.data.snapshot.value; //存儲每個地圖

      var titles = myMap.values; 

          List onesTitles = new List(); 
          List onesIds = new List(); 
          List onesImages = new List(); 
          List onesRank = new List(); 

          for (var items in titles) { 
          onesTitles.add(items['vidTitle']); 
          onesIds.add(items['vidId']); 
          onesImages.add(items['vidImage']); 
          onesRank.add(items['Value']); 
          } 

          names = onesTitles; 
          ids = onesIds; 
          numbers = onesRank; 
          vidImages = onesImages; 
+0

我已經編輯了答案,使其瞭解如何使用List.sort更加清晰()。 – aziza

回答

2

您可以使用List.sort()爲此,我已經創建,我硬編碼的Videos類的3個實例自定義的例子,然後在上升增加他們在我的構建方法是在List訂購。使用List.sort()compareTo,我可以按降序重新排列它們。

List<Videos> myList = [_firstVideos, _secondVideos, _thirdVideos]; 
sort() { 
     for (var video in myList) { 
     print(video.rank); ///prints 1 2 3 
     } 
     myList.sort((y, x) => x.rank.compareTo(y.rank)); 

     for (var video in myList) { 
     print(video.rank); ///prints 3 2 1 
     } 
    } 

...

import 'package:flutter/material.dart'; 


    void main(){ 
     runApp(new MaterialApp(home: new MyApp(),)); 
    } 

    class MyApp extends StatelessWidget { 

     Videos _firstVideos = new Videos(
     videoId: "0001", 
     rank: 1, 
     title: "My First Video", 
     imageString: "My First Image", 
    ); 
     Videos _secondVideos = new Videos(
     videoId: "0002", 
     rank: 2, 
     title: "My Seocnd Video", 
     imageString: "My Second Image", 
    ); 

     Videos _thirdVideos = new Videos(
     videoId: "0003", 
     rank: 3, 
     title: "My Third Video", 
     imageString: "My Third Image", 
    ); 

     @override 
     Widget build(BuildContext context) { 
     List<Videos> myList = [_firstVideos,_secondVideos,_thirdVideos]; 
     sort() 
     { 
      myList.sort((y,x)=>x.rank.compareTo(y.rank)); 

     print(myList[0].title); 
     } 
     return new Scaffold(
      body: new Center(
      child: new FlatButton(onPressed: sort, child: new Text("Sort")), 
     ), 
     ); 
     } 
    } 


    class Videos{ 
     String videoId; 
     int rank; 
     String title; 
     String imageString; 

     Videos({this.videoId, this.rank, this.title, this.imageString}); 
    } 
+0

@azia請看看我添加的其他'OPTION'。我試圖排序而不建立'Video'列表 –