存储用户数据然后用Typhoon注入的正确方法是什么?

时间:2016-05-12 11:41:35

标签: ios objective-c dependency-injection typhoon

在我的iOS应用程序中,我有从网络加载的用户数据,并保存为一个普通的Objective-C对象,该对象将其数据保存到UserManager。我需要能够注销当前用户并将其删除,然后登录新用户并开始在整个应用程序中使用该用户。现在它只是一个我正在调用-(User)currentUser的单身人士,方法UserManager

我正在转换为使用我的http://typhoonframework.org中的Typhoon框架进行依赖注入。存储用户数据的正确方法是什么?我知道我可以保留我的definition.scope = TyphoonScopeSingleton;课程,通过Typhoon将它注入我需要的任何地方,然后将其设置为Typhoon type User

但如果我这样做,它不仅仅是一个单身人士吗?我知道它更好一点,因为它被注入到类中而不是隐藏在它们的实现中。但是,似乎应该有一个更好的方法来保持一个class App extends React.Component { render() { if (!adminLogin){ this.context.router.transitionTo('/login'); } return ( <div className="wrapper"> <Navbar /> <SidebarLeft /> <div className="content-wrapper"> {this.props.children} </div> <Footer /> </div> );}} App.contextTypes = { router: React.PropTypes.func }; export default App; 对象的某个位置并注入当前的对象,而不用带有getter的[inject]单例包装它。

感谢。

1 个答案:

答案 0 :(得分:0)

感谢您使用Typhoon!

如果我理解正确,你需要在你的类中注入currentUser,如:

@implementation Assembly

- (User *)currentUser
{
    return [TyphoonDefinition withFactory:[self userManager] selector:@selector(currentUser)];
}

- (UserManager *)userManager
{
    return [TyphoonDefinition withClass:[UserManager class] configuration:^(TyphoonDefinition *definition) {
        definition.scope = TyphoonScopeSingleton;
    }];
}