ios - 使用多个字符串创建 onDoneBlock
问题描述
在我的应用程序中,我将锻炼存储为 NSDictionary(练习、集、代表、公斤和笔记),但我想将每个人存储为字符串。我有一个自己的课程来创建锻炼(ExerciseCreator.swift)。onDoneBlock 是这样的:var onDoneBlock : ((NSDictionary) -> Void)?
现在代码是这样使用的:
//Creating a dictionary from the exercise values
var exerciseDictionary: NSDictionary!
exerciseDictionary = ["Exercise" : exerciseNameTextField.text!, "Sets" : String(format: "%d", setCount), "Reps" : String(format: "%d", repsCount), "KG" : String(format: "%d", kgCount)]
//Closing modal and refreshing tableview on parent view controller
if let callback = self.onDoneBlock {
callback (exerciseDictionary)
}
在我的主视图控制器中,代码如下:
let exerciseCreator = ExerciseCreator()
exerciseCreator.viewReady = {() -> Void in}
exerciseCreator.onDoneBlock = {(dict) -> Void in
self.dismiss(animated: true, completion: {
self.exercisesArray.add(dict)
self.tableView.reloadData()
print("Exercises: \(self.exercisesArray)")
})
}
我怎样才能做到这一点,但使用字符串而不是 NSDictionary?
解决方案
您可以像下面这样更新您的块声明
var onDoneBlock : ((Array<Any>) -> Void)?
同时更新参数名称,如下所示
self.onDoneBlock = {(arrayVal) -> Void in
self.dismiss(animated: true, completion: {
self.exercisesArray.add(arrayVal)
self.tableView.reloadData()
print("Exercises: \(self.exercisesArray)")
})
}
并像这样传递你的数组
//Closing modal and refreshing tableview on parent view controller
if let callback = self.onDoneBlock {
callback (arrayObject)
}
编辑:
对于这样的字符串数组传递值
if let callback = self.onDoneBlock {
callback (["Test1","Test2","Test3"])
}
希望这会有所帮助!
推荐阅读
- typescript-compiler-api - 使用 TypeScript Compiler API 从 @types/long 中提取导出的符号
- python - ZeroDivisionError:作为“整数除法或模除以零”,但得到“除以零”
- sql - 案例计数未返回预期信息
- javascript - Javascript文件API读入缓冲区
- github - 我从哪里获得公钥来验证 GitHub 的访问令牌?
- python - 使用 DateTimeIndex 作为 x 轴创建折线图/条形图(双轴 = 月/年)
- javascript - 支持所有类型参数的 Memoize 函数
- python - pandas read_sql 后用逗号分隔的列名字符。(1 个单列名称中的每个字符后都有一个逗号)
- c++ - 如何在现代 OpenGL 中画一个圆?
- java - 如何为 ConnectionPool 配置类编写 JUnit TestClass