- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 API 调用更新我的 UILabels。我有一个 API 客户端文件,它提取所需的信息,然后将其传递到数据存储,然后解析信息,然后创建电影对象。 collectionViewController 访问信息没有问题,但是当它将信息传递给下一个 View Controller 时,就会出现问题。该信息不会出现在 View Controller 上,然后当我单击返回时,该信息将会出现。来自 API 客户端的信息存在某种延迟,或者我似乎无法弄清楚。
//Second API call to get information for the Second View Controller (Detail View Controller)
class func getDescriptiveMovieResultsFromSearch(movieID: String, completion:(NSDictionary)-> ())
{
var descriptiveDictionary: [String: String] = [:]
let searchURL = "https://www.omdbapi.com/?i=\(movieID)&?plot=short"
let nsurl = NSURL(string: searchURL)
//convert the url into an NSURL
guard let unwrappedNSURL = nsurl else {print("ERROR OCCURRED HERE"); return}
//unwrap the nsurl using guard let
//let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: unwrappedNSURL)
//creation of the request
request.HTTPMethod = "GET"
//By Default everythiing is a GET request if you are getting information and you don't need it
//request has an HTTPMethod of type "GET" to obtain information
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
guard let unwrappedData = data else {print("Error occurred here"); return}
if let responseDictionary = try? NSJSONSerialization.JSONObjectWithData(unwrappedData, options: []) as? NSDictionary
{
let castedResponseDictionary = responseDictionary as? [String : String]
guard let unwrappedResponseDictionary = castedResponseDictionary else {print("This did not work!"); return}
descriptiveDictionary = unwrappedResponseDictionary
}
completion(descriptiveDictionary)
}
task.resume()
}
//MovieDataStore function to parse through the information
/Second API Call
func getDescriptiveMovieInformationWith(movie: Movie, Completion: (Bool) -> ())
{
guard let unwrappedimdbID = movie.imdbID else {print("AN ERROR OCCURRED HERE"); return}
OMDBAPIClient.getDescriptiveMovieResultsFromSearch(unwrappedimdbID) { (descriptiveResponseDictionary) in
let desMovieDirector = descriptiveResponseDictionary["Director"] as? String
let desMovieWriters = descriptiveResponseDictionary["Writer"] as? String
let desMovieActors = descriptiveResponseDictionary["Actors"] as? String
let desMovieShortPlot = descriptiveResponseDictionary["Plot"] as? String
let desMovieimbdRating = descriptiveResponseDictionary["imdbRating"] as? String
//unwrapping each of the of the json information
guard let
unwrappedDesMovieDirector = desMovieDirector,
unwrappedDesMovieWriters = desMovieWriters,
unwrappedDesMovieActors = desMovieActors,
unwrappedDesMovieShortPlot = desMovieShortPlot,
unwrappedDesMovieimbdRating = desMovieimbdRating
else {print("AN ERROR OCCURRED HERE!"); return}
movie.director = unwrappedDesMovieDirector
movie.writers = unwrappedDesMovieWriters
movie.actors = unwrappedDesMovieActors
movie.shortPlot = unwrappedDesMovieShortPlot
movie.imdbRating = unwrappedDesMovieimbdRating
print("******************************************")
print("Movie Director: \(movie.director)")
print("Movie writers: \(movie.writers)")
print("Movie actors: \(movie.actors)")
print("Movie shortPlot: \(movie.shortPlot)")
print("Movie imdbRating: \(movie.imdbRating)")
print("******************************************")
//Completion(true)
Completion(true)
}
}
//Detail View Controller
/Second API Call
func getDescriptiveMovieInformationWith(movie: Movie, Completion: (Bool) -> ())
{
guard let unwrappedimdbID = movie.imdbID else {print("AN ERROR OCCURRED HERE"); return}
OMDBAPIClient.getDescriptiveMovieResultsFromSearch(unwrappedimdbID) { (descriptiveResponseDictionary) in
let desMovieDirector = descriptiveResponseDictionary["Director"] as? String
let desMovieWriters = descriptiveResponseDictionary["Writer"] as? String
let desMovieActors = descriptiveResponseDictionary["Actors"] as? String
let desMovieShortPlot = descriptiveResponseDictionary["Plot"] as? String
let desMovieimbdRating = descriptiveResponseDictionary["imdbRating"] as? String
//unwrapping each of the of the json information
guard let
unwrappedDesMovieDirector = desMovieDirector,
unwrappedDesMovieWriters = desMovieWriters,
unwrappedDesMovieActors = desMovieActors,
unwrappedDesMovieShortPlot = desMovieShortPlot,
unwrappedDesMovieimbdRating = desMovieimbdRating
else {print("AN ERROR OCCURRED HERE!"); return}
movie.director = unwrappedDesMovieDirector
movie.writers = unwrappedDesMovieWriters
movie.actors = unwrappedDesMovieActors
movie.shortPlot = unwrappedDesMovieShortPlot
movie.imdbRating = unwrappedDesMovieimbdRating
print("******************************************")
print("Movie Director: \(movie.director)")
print("Movie writers: \(movie.writers)")
print("Movie actors: \(movie.actors)")
print("Movie shortPlot: \(movie.shortPlot)")
print("Movie imdbRating: \(movie.imdbRating)")
print("******************************************")
//Completion(true)
Completion(true)
}
}
//详细 View Controller 覆盖函数 viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.blackColor()
self.titleLabel.textColor = UIColor.yellowColor()
self.yearLabel.textColor = UIColor.yellowColor()
self.directorLabel.textColor = UIColor.yellowColor()
self.writersLabel.textColor = UIColor.yellowColor()
self.actorsLabel.textColor = UIColor.yellowColor()
self.shortPlotLabel.textColor = UIColor.yellowColor()
self.imdbIDLabel.textColor = UIColor.yellowColor()
self.typeLabel.textColor = UIColor.yellowColor()
self.imdbRating.textColor = UIColor.yellowColor()
stackViewLabel.translatesAutoresizingMaskIntoConstraints = false
stackViewLabel.topAnchor.constraintEqualToAnchor(self.topImage.bottomAnchor, constant: 5).active = true
stackViewLabel.widthAnchor.constraintEqualToAnchor(self.view.widthAnchor, multiplier: 1.00).active = true
stackViewLabel.heightAnchor.constraintEqualToAnchor(self.view.heightAnchor, multiplier: 0.50).active = true
stackViewLabel.leftAnchor.constraintEqualToAnchor(self.view.leftAnchor).active = true
//unwrapped Movie Object
guard let unwrappedMovieObject = movieObject else {print("AN ERROR OCCURRED HERE!"); return}
self.store.getDescriptiveMovieInformationWith(unwrappedMovieObject) { (isWorking) in
if isWorking {
dispatch_async(dispatch_get_main_queue()){
guard let unwrappedPosterURL = unwrappedMovieObject.posterURL else {print("AN ERROR OCCURRED HERE"); return}
if unwrappedPosterURL == "N/A"{
self.topImage.image = UIImage.init(named: "star_PNG1592")
}
else {
if let url = NSURL(string: unwrappedPosterURL){
if let data = NSData(contentsOfURL: url){
//print("I have an image to display")
self.topImage.image = UIImage.init(data: data)
}
}
}
self.titleLabel.text = unwrappedMovieObject.title
self.yearLabel.text = unwrappedMovieObject.year
self.imdbIDLabel.text = unwrappedMovieObject.imdbID
self.typeLabel.text = unwrappedMovieObject.type
guard let
unwrappedDirector = unwrappedMovieObject.director,
unwrappedWriters = unwrappedMovieObject.writers,
unwrappedActors = unwrappedMovieObject.actors,
unwrappedShortPlot = unwrappedMovieObject.shortPlot,
unwrappedRating = unwrappedMovieObject.imdbRating
else {print("PROPERTIES WERE UNWRAPPED"); return}
self.directorLabel.text = unwrappedDirector
self.writersLabel.text = unwrappedWriters
self.actorsLabel.text = unwrappedActors
self.shortPlotLabel.text = unwrappedShortPlot
self.imdbRating.text = unwrappedRating
}
}
else{
print("AN ERROR OCCURRED HERE")
}
}
}
最佳答案
NSURLSession.sharedSession().dataTaskWithRequest(request)
我不确定sharedSession使用什么回调队列,如果它不是主线程,你将需要
DispatchQueue.main.async {
completion(descriptiveDictionary)
}
关于swift - API 调用更新 UILabel 时出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39881386/
我有一个 UILabel,其不透明度已通过使用 [UIColor clearColor] 更改为空白我现在想将标签内文本的不透明度更改为尽可能完整的级别。我该怎么做? 最佳答案 使用以下代码更改UIL
我在同一个站点中阅读了如何插入和 UILabel(子类 UILabel 并覆盖所需的方法)。在将它添加到我的应用程序之前,我决定在一个独立的测试应用程序中对其进行测试。代码如下所示。 这是 MyUIL
NSString *longStr = @"AAAAAAAAAA\nBBBBB\nCCCCCCCCCCCCCCCCCC"; 如何使用 UILabel 截断某些标签宽度: AAA... BBB...
我想在 UILabel.text 上有一个纹理。 这样做我对 UILabel 进行了子类化。使用 -drawTextInRect 方法,我尝试仅获取用于使用 CGImageMaskCreate 函数创
我正在尝试使用 iOS 6.0 中新的自动布局 api 构建动态布局。我尝试构建的布局有 2 个按钮,它们之间有一个标签,如下图所示: 我想要的是以灰色显示的容器 View 根据标签中的文本量增加或减
我不知道这是否是我做错了什么,但每次 iOS 6 到 7、7 到 8 以及从 8 到 9 的重大更新时,一些 UILabel 似乎不够大,我看到“...”因为标签被截断了。我现在必须通过应用程序并重置
我偶然发现了一个我不确定如何解决的问题。 正如您在此处看到的名称应该所在的标签(我从用户输入中获取名称,这意味着它是动态的)。如果写得太长,它只会覆盖其他标签。 此外,在 Storyboard中,UI
我是初学者,所以对于任何似乎被忽视或简单的事情,我深表歉意。 基本上,我想要做的是让屏幕上的日期选择器更新 UILabel,然后获取更新 UILabel 的结果并将其推回到前一个屏幕上的另一个 UIL
我有一个 UILabel 的 NSMutableArray。我需要能够在用户触摸时选择此 NSMutableArray 中的特定 UILabel,并将此触摸 UILabel 的中心移动到用户将手指拖动
我知道对于类的元素 UIButton和 UIBarButtonItem他们自动假设window.tintColor作为主要颜色,如果我在应用程序中随时为窗口设置新的 tintColor,则会立即更改。
我是开发者世界的新人,自 2 月份以来一直断断续续地使用 swift 和 Xcode。我希望有人能帮助我。我正在尝试制作一个简单的小费计算器,但似乎无法将两个 uilabels 放在一起。这就是我到目
我有一个单元格原型(prototype),我正在尝试向其添加两个标签。我有两个紧挨着的标签,但标签的大小是动态的,所以我希望第二个标签能够根据第一个标签的大小移动。 基本上,我希望两个标签之间有一个固
这个问题看起来很平常..但是我昨天遇到了问题,我在 xib 中添加了一个标签并为其创建了导出,我想要在该标签内有多行,按钮,所以我决定添加新的子里面有标签... UILabel *label; lab
我正在尝试实现一个可以更改 uilabel 字体大小的功能,我可以缩放 uilabel 大小(即 uilabel.size),然后自动更改 uilabel 的字体大小,示例应用程序是 InstaTex
如果我设置bottomLabel.text = Chinese character,当我运行它时我看不到aboveLabel,如果我调试 View 层次我可以看到它。so有什么问题吗? UIL
我不太确定标题是否符合我的要求,但我有一个带有一堆句子的 label,我想将它们中的每一个分开到不同的 UILabel 这是我的代码 var s: [String] = [] for (i
当我更改 UILabel 的文本属性时,它只会在应用程序中部分更新。 我试过将它放在 viewDidLoad 函数和单独的专用函数中,但无济于事。如果我在更新后将 Label.text 打印到控制台,
我正在尝试使用自动布局对齐两个 UILabel,其中第一个标签没有设置宽度但使用固有内容大小,第二个应该与第一个宽度相同,将文本换行。 理想情况下,第二个标签应将数字行设置为 0 以使用动态类型,但我
我有几个标签,它们永远不应该相互接触。见下图(忽略黄色字母): 一共是4个标签,2个选手名字,2个分数。球员的名字将取代原来的球员标签文本。所以“玩家 1:”可以是任意宽度的任意文本。标签在 View
我正在开发一个应用程序,我需要能够点击并拖动 UILabels。第二个挑战是我需要屏幕上的其他 UILabel 相互移开(切勿重叠)。因此,当我拖动一个标签并遇到另一个标签时,它会将第二个标签撞开。也
我是一名优秀的程序员,十分优秀!