问题标签 [viper-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
590 浏览

ios - 如何将 IBOutlet 值从视图传递到 VIPER iOs 中的交互器?

我有一个与视图一起加载的 textView。然后用户可以编辑和修改值,当用户按下导航按钮时,viewWillDisappear() 将启动并将 textView 出口的值传递给交互器,这应该从 dataManager 触发一个方法来保存它核心数据的价值。

我的问题是在不违反 viper 规则的情况下传递此参数的最佳方法是什么?

我是这样做的,但我几乎可以肯定我做错了。这是我对 VIPER 架构的第一次体验,我们将不胜感激。

查看文件:

主持人:

交互者:

数据管理器:

完整的项目可以在这里找到: https ://github.com/AlfroMlg/Notes

0 投票
1 回答
627 浏览

ios - EXC_CRASH (SIGABRT) UIPopoverPresentationController 演示文稿TransitionWillBegin

我收到了来自生产的崩溃日志,无法理解如何重现它。根据我掌握的信息,它只在装有 iOS 9.3 的 iPad 上发生过一次。

这次崩溃发生在我的最新版本之后,我使用 VIPER 方法来表达我的一些观点。我已经搜索了互联网,并认为我的问题可能是由 Leo Natan 在他的评论中描述的类似问题引起。但我不确定并且想知道如何重现和解决这个问题。我什至不明白正在呈现什么弹出框。

这是我的崩溃日志(已删除二进制图像):

我有一种感觉,当我的一个 VIPER 模块被调用时,可能会发生这种崩溃。它应该以这种方式工作:

当前视图控制器 (MVC) 通过调用此方法组装模块:

然后方法 choosePeriodWithParams 将视图显示为弹出框:

我认为这两行可能与问题有关。但不确定如何证明:

0 投票
1 回答
1378 浏览

swift - 线程 1 EXC_BAD_ACCESS(代码=2,地址=0x7ffeeb1aeff8)

我正在努力学习 VIPER。我跟着这个教程。我有这些InteractorPresenter

现在,这里发生了什么,我让路由器工作,视图来了,它正在调用演示者,演示者正在调用交互器,交互器正在成功调用 API 并获取数据,现在是时候返回数据了从InteractortoPresenter和 here 收到它不断抛出以下错误:

线程 1 EXC_BAD_ACCESS(代码=2,地址=0x7ffeeb1aeff8)

0 投票
2 回答
379 浏览

ios - 用于数据验证的 Swift VIPER Interactor 和 Presenter 规则

我确实有几个问题。使用交互器的最佳方法是什么:

假设在交互器中我保存了一些数据,但我想检查这些数据并显示下一个警报:

第一个问题是这违反了毒蛇?在将数据传递给拦截器之前,我是否需要检查演示者中的数据?

另一个问题:我需要使用函数showAlertFillIssue而不是传递文本吗?

甚至可以说presenter如果违反interactor.

0 投票
3 回答
920 浏览

swift - How to reflect the new section to UICollectionView in RxDataSource?

I am building an iOS app with RxSwift and RxDataSource using VIPER architecture. I want to change the content of the UICollectionView as the value of the presenter changes (as the user typed in some letters in the searchBar, the collectionView should show all users' profile that starts with the letters), but it doesn't work as I wanted it to.

By trying debug() function, the value of presenter.section in ViewController (which holds the content of the CollectionView) is changed after I typed in some letters in the searchBar. However, the collectionView is not reflecting the change. Here are the main parts of the code.

code of ViewController

code of Presenter

How I defined dataSource

  • ViewController has the instance of Presenter, and the presenter has an instance called section. This section holds the list of the users whose username is starting with specific letters.

Could you please help me? If I have left anything unclear, please let me know in the comment.

Update: output of the debug()

0 投票
1 回答
139 浏览

ios - VIPER 架构可以在单个模块中包含多个 UIViewController 吗?

VIPER 架构可以在单个模块中包含多个 UIViewController 吗?

VIPER 架构的示例通常在一个 VIPER 模块中只有一个 UIViewController。

我想知道多个 UIViewControllers 是否共享密切相关的逻辑并且 UIControllers 本身也密切相关,单个 VIPER 模块可能有多个 UIViewController。

0 投票
1 回答
1326 浏览

ios - iOS中的MVP vs MVC vs MVVM vs VIPER

是否存在在所有主要架构/设计中编写的任何示例 Swift 代码(多次重写同一项目),其中包括:MVP、MVC、MVVM 和/或 MVVM-C 和 VIPER。我正在寻求关于这些设计架构的完整定量性能使用,以及这些设计架构对源代码影响的定性比较。我已经阅读了很多文章,但我从中得到的只是理论和定义。

0 投票
2 回答
294 浏览

ios - iOS VIPER 交互器最佳实践

在 iOS VIPER 项目中,需要在每个模块中调用远程服务(例如刷新令牌 + 检查用户登录)。实现这一需求的最佳实践是什么?

  • 每个模块可以有多个交互器吗?

  • 或者我们是否应该在每个模块(交互器)中实现相同的业务逻辑?

  • 我们是否应该将交互器与模块(如网络)分开并根据需要在模块之间共享?

在我研究的大多数示例中,他们通常谈论不同的业务逻辑,而不是同一个!

0 投票
1 回答
219 浏览

ios - VIPER 子类化中的泛型类型。无法将类型“ChildType”的值分配给类型“ParentType”

我有 VIPER 架构,我想创建适用于泛型类型的父 VIPER 搜索组件。这个想法很简单,所以我有搜索栏和表格视图。例如,我可以在表格视图中显示饮料或食物名称。取决于我指定要显示的通用数据类型或食物或饮料。

我找到了一个很好的例子,可以解决我的通用视图控制器问题。但我想为 swift 通用 VIPER 架构创建类似的东西。

我将跳过描述所有 VIPER 类,如 (RouterInterdictor)。

所以我有父视图控制器:

和孩子:

这是 BaseSearchViewController 中指定的父演示者

还有我想在我的桌子上显示的特定类型食物的儿童食物搜索主持人:

当我尝试配置我的 VIPER 时:

这是一个关于这个问题的回购。

0 投票
1 回答
190 浏览

ios - 如何在 swifty_viper 实现中使用 ModuleConfiguration 和 ModuleInitializer

我在我的应用程序中使用 Generamba ( https://github.com/strongself/Geneamba ) 和它的swifty_viper模板生成了一个新的 VIPER 模块。它生成了一个Configurator包含“ModuleConfigurator.swift”和“ModuleInitializer.swift”文件组的模块。

问题是我应该如何使用它们?