首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIViewController DataModel类代表?

UIViewController DataModel类代表?
EN

Stack Overflow用户
提问于 2015-10-08 06:46:28
回答 1查看 102关注 0票数 1

我想要一个UIViewController作为DataModel的代表。

在我的数据模型中,当我实例化它时,会有来自解析的数据的延迟加载,这基本上发生在app委托的applicationDidBecomeActive(application: UIApplication)函数中,而在我的数据模型中,我是通过Query.findObjectsInBackgroundWithBlock({ (success, error:NSError?)函数获取解析对象。

我希望代表们被召集到成功的街区。我想知道是否有可能对数据模型进行UIViewController委托?如果是的话任何例子。

我现在就是这么做的-

在应用程序代表中-

代码语言:javascript
复制
class AppDelegate: UIResponder, UIApplicationDelegate {
let dataModel = DataModel()
func applicationDidBecomeActive(application: UIApplication) {
    dataModel.handleFirstTime()
    }
}

在数据模型类中-

代码语言:javascript
复制
protocol DataModelDelegate:class{
func dataDidLoad(controller:DataModel)
func dataHaveError(controller:DataModel)}

class DataModel {
weak var delegate:DataModelDelegate?
var dataApplied = [PFObject]()

func handleFirstTime(){
let appliedQuery = PFQuery(className: "DummyClass")
    appliedQuery.findObjectsInBackgroundWithBlock({ (success, error:NSError?) -> Void in
        if error != nil {
            print(error?.userInfo)
        }else{
            dataApplied = success!
            self.delegate?.dataDidLoad(self)
            print(dataApplied.count)
        }
    })
}
}

在我的ViewController里-

代码语言:javascript
复制
class tableViewController: UITableViewController,DataModelDelegate { 
 override func viewDidLoad() {
    super.viewDidLoad()
    let dataModel:DataModel = DataModel()
    dataModel.delegate = self
 }
func dataDidLoad(controller: DataModel) {
    print("TableView Reload trigger")
    tableView.reloadData()
 }
//There are other TableView Controller related methods
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 07:08:38

好吧,你的代码乍一看都很好。但这里的问题是,您要在DataModel的另一个对象上设置视图控制器委托。

您需要确保您没有在您的DataModel中创建tableViewController的另一个对象,并且使用您在AppDelegate中创建的相同对象,因为这是用来触发您的handleFirstTime()函数的对象。

因此,您的表控制器正在监视对象2,而在您的handleFirstTime()中,正在调用对象1上的委托。

另外,如果您要从许多地方访问这个对象,您也可以尝试使用单例DataModel

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33008470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档