0

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

然后,当用户点击表 2 中唯一的单元格时,他将被带到表 VC 3,所有媒体都像 snapchat 一样填满屏幕。

我的问题:我怎样才能让我准备好第一个媒体,以便在你去桌子 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() 都会运行,我发现它很慢。那就是:在我可以点击表 3 之前大约需要 1-3 秒,否则视图将需要一些时间来加载。

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

4

1 回答 1

1

有一种也是唯一的方法可以使异步看起来同步,即通过预取它们,在您的情况下,您点击第二个 vc 中的单元格,然后获取图像/视频并导航,以使此过程更快,您需要获取该媒体在viewDidLoad2nd vc 内部,因此如果用户去 3rd vc 完成获取的可能性很高,在 firstVc 中获取也会使其更快,但导航的可能性很低,这将切断用户的网络在那里你会保存所有可见的媒体

于 2019-05-09T00:33:49.393 回答