如何在观看之前准备内容?
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 中获取也会使它更快,但它的导航可能性很低,这会从用户的网络中切断,因为在那里你会保存所有可见的媒体
我有一个像 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 中获取也会使它更快,但它的导航可能性很低,这会从用户的网络中切断,因为在那里你会保存所有可见的媒体