如何在观看之前准备内容?

How to prepare content before it is even viewed?

我有一个像 snapchat 这样的应用程序。在一个 table VC 上,我获取所有媒体 1(第一个媒体)然后当你点击其中一个媒体时,我会带你到 table VC 2 我格式化的地方table VC 1 中快照附带的数据(我将快照保存到 post 对象)。

然后,当用户点击 table 2 中唯一的单元格时,他将被带到 table VC 3,所有媒体都会填满屏幕,例如快照。

我的问题:我怎样才能准备好第一个媒体,以便在您去 table 3 时立即可用?

目前我在做以下事情:

                    //numberMedia is always "media1" here
                if self.selectedPost?.media[0].imageURLString != nil {
                    print("thsi is an image")
                    let media = InterimMediaObject(imageURLString: (self.selectedPost?.media[0].imageURLString)!, timeStamp: (self.selectedPost?.media[0].timeStamp)!, numMedia: numberMedia)
                    media.postID = self.selectedPost?.media[0].postID
                    self.selectedPost?.interimMedia.append(media)

                    self.selectedPost?.interimMedia[0].image = self.getImage(urlString: (self.selectedPost?.interimMedia[0].imageURLString!)!)

                    print((self.selectedPost?.interimMedia[0].imageURLString!), "<-- here is img val??????")
                } else {
                    print("this is a video")

                    print((self.selectedPost?.media[0].videoURLString)!, "<--- this has val?")

                    self.selectedPost?.interimMedia.append(InterimMediaObject(videoURLString: (self.selectedPost?.media[0].videoURLString)!, timeStamp: (self.selectedPost?.media[0].timeStamp)!, numMedia: numberMedia, thumbnailString: (self.selectedPost?.media[0].thumbnail)!))
                    self.selectedPost?.interimMedia[0].thumbnailImage = self.getImage(urlString: (self.selectedPost?.interimMedia[0].thumbnailString!)!)
                    self.selectedPost?.interimMedia[0].videoURL = self.getVideoURL(stringUrl: self.selectedPost?.interimMedia[0].videoURLString!)
                    self.selectedPost?.interimMedia[0].postID = self.selectedPost?.media[0].postID

                    print(self.getVideoURL(stringUrl: self.selectedPost?.interimMedia[0].videoURLString!), "<-- nil or nil? TEWICE")
                }

getImage() 或 getVideo() 需要的那个 运行 并且我发现它很慢。也就是说:在我点击 table 3 之前大约需要 1-3 秒,否则视图将需要时间来加载。

我想让它和 snapchat 一样快。我怎样才能做到这一点?

只有一种方法可以使异步看起来同步,即 pre-fetching 它们,在您的情况下,您点击第二个 vc 中的单元格,然后获取 image/video 并导航,为了使这个过程更快,您需要在第 2 个 vc 的 viewDidLoad 中获取该媒体,因此如果用户转到第 3 个 vc,则很有可能完成获取,在 firstVc 中获取也会使它更快,但它的导航可能性很低,这会从用户的网络中切断,因为在那里你会保存所有可见的媒体