我正在尝试将viewController
的逻辑移到view model
但由于某种原因它总是崩溃,说unexpectedly found nil while unwrapping an Optional value
。无论我试图移动什么代码,我总是会遇到这个错误,所以我必须做一些根本错误的事情。以下是我在viewController
中的代码示例:
var recipesViewModel: RecipesViewModel! //VIEW MODEL CLASS REFERENCE
var recipeCategory = recipesViewModel.transformToUpperCase(dataRecieverStringRecipeView: "testString")
然后在view model
班:
func transformToUpperCase(dataRecieverStringRecipeView: String) -> String {
var recipeCategory = dataRecieverStringRecipeView
var prefixRecipeCategory = recipeCategory.prefix(1).uppercased()
var dropFirstRecipeCategory = recipeCategory.dropFirst()
var upperCasedRecipeCategory = prefixRecipeCategory + dropFirstRecipeCategory
return upperCasedRecipeCategory
}
...它将字符串翻译成大写字母作为第一个字母。
当所有内容都在view model
中时,代码运行得非常好,但是一旦我将它移动到另一个类并通过一个对象调用该函数就会崩溃。我错过了什么?
答案 0 :(得分:0)
var recipesViewModel: RecipesViewModel!
不会实例化新对象。将类别函数放回RecipesViewModel类中,然后将变量声明更改为:
<强>声明强>
var recipesViewModel: RecipesViewModel!
稍后
recipesViewModel = RecipesViewModel() //or whatever initializer you need.
修改强>
正如rmaddy指出的那样:你可能会放弃!如果您没有任何可用的初始化程序或者这不是运行时注入的属性而只是将其作为1-liner:
,请使用var recipesViewModel: RecipesViewModel = RecipesViewModel()
。
var recipesViewModel: RecipesViewModel = RecipesViewModel()
答案 1 :(得分:0)
要更改的行:
var recipesViewModel: RecipesViewModel!
替换行:
var recipesViewModel = RecipesViewModel()
这行代码将正确声明/创建recipesViewModel
作为类RecipesViewModel
的对象。
希望能解决你的问题!