ios - Swift:NSUserDefaults 没有立即设置

标签 ios swift uipageviewcontroller alamofire

我有什么

我有一个带有 UITableView 的 View Controller (SelectNameViewController),上面有一个名称列表。当用户点击一个名字时,它会转到一个 ViewController (ResultController),它有一个容器 View ,可以加载 3 个 ViewControllers (vc1,vc2, vc3) 允许用户滚动浏览。

ResultController 上,我有一个连接到 JSON 文件并根据所选名称下载信息的 alamofire 请求:

Alamofire.request(.GET, sendyURLSet, parameters: ["name": passedName, "api_key": api_key])
.responseJSON { response in
    switch response.result {
       case .Success:

       if let value = response.result.value {
          let json = JSON(value)

          self.age = json["age"].stringValue
          self.userInfo.setValue(self.age, forKey: "age")

        }
       case .Failure(let error):
           print(error)
   }
}

VC1 我的 viewDidAppear

中有这个
if let a = userInfo.stringForKey("age") {
        print("Age:  \(a)")
    } else {
        print("nope")
}

问题

从 Alamofire 请求加载内容后,我无法在 PageViewController subview 上加载数据。

当用户单击名称并转到 ResultController 时,3 个 View 将加载到容器 View 中。第一个出现的屏幕是 vc1

但是,在控制台中我得到:

Nope

如果我滑动到 vc2 然后返回到 vc1 我得到:

Age 32

在控制台中。

问题

谁能告诉我为什么该值没有出现在 ViewController (vc1) 的第一次显示中并告诉我如何解决它?

我快疯了

最佳答案

看起来 vc1 的加载速度快于数据获取完成的速度。

要么等待数据加载完成再加载新 Controller ,要么数据加载完成后直接设置标签

关于ios - Swift:NSUserDefaults 没有立即设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35702636/

相关文章:

ios - EventKitUI/EKCalendarChooser 需要访问联系人 - 为什么?

arrays - 使用阵列中的手电筒执行摩尔斯电码

ios - 每次向下滚动时如何在 UITableView 上居中显示加载 View ?

ios - 在 Swift 中点击页面控件时更改页面

ios - iOS7 上的 UICollectionViewCell 子类中的约束未更新

iOS 自动布局 : Issues with 2 variable sized boxes and 1 fixed sized box

ios - iCloud低速检索数据

Swift 子级在嵌套或 ObserveSingleEvent 时返回 Null,在未嵌套时返回良好

ios - UIPageViewController委托(delegate)方法类似于scrollViewDidScroll :(UIScrollview*)scrollview

ios - 禁用 UIPageViewController 弹跳 - Swift