我正在尝试在项目的另一个类中使用名为“ theList ”的字符串数组。我知道变量是在方法中声明的,因此不是全局范围。但是我该如何解决这个问题呢?我尝试了一些事情,没有任何工作。完成此任务的最佳方法是什么?
编辑:我想做的就是将“theList”设置为“Body” [![在此处输入图像说明] [1]] [1]
我希望这会清除一点,我可以选择一个答案。谢谢大家!
答案 0 :(得分:1)
我认为如果你想在函数之外访问那个列表,你应该简单地把它变成类的变量。
class TaskManager: NSObject {
//Sets up array of Tasks
var tasks = [task]()
var theList = [String]()
//Add Task Function
func addTask(serial: String){
tasks.append(task(serial: serial))
theList = tasks.map({ (task) -> String in
return task.serial
})
}
}
答案 1 :(得分:1)
这样做的最佳方法是查看课程范围和声明。在具有您想要使用它的范围的范围内定义列表,或将其设置为全局。这就是我如何完成这项任务。有时候将它添加到更高级别的类声明中,有时我会将它全局化为整个程序。在编码时取决于任务和我的前景。
答案 2 :(得分:0)
让函数返回添加任务的结果:
class TaskManager: NSObject {
// declare your variables
func addTask(serial: String) -> [String] {
// put your realisation
}
}
或公开提供连续出版物的变量:
class TaskManager: NSObject {
var tasks = [Task]()
public var serials = [String]()
func addTask(serial: String) {
// put your realisation
// save the results to serials
}
}
然后通过实例访问它。
答案 3 :(得分:0)
在类之上添加List变量使其成为全局变量。 然后我不得不从addTask函数中删除let。
//Add Task Function
func addTask(serial: String){
tasks.append(task(serial: serial))
let theList = tasks.map({ (task) -> String in
return task.serial
}).joinWithSeparator("\n")
成为
//Add Task Function
func addTask(serial: String){
tasks.append(task(serial: serial))
theList = tasks.map({ (task) -> String in
return task.serial
}).joinWithSeparator("\n")
最终代码如下。
import UIKit
var theList : String = String()
var taskMgr: TaskManager = TaskManager()
struct task {
var serial = "Un-Named"
}
public class TaskManager: NSObject {
//Sets up array of Tasks
var tasks = [task]()
//Add Task Function
func addTask(serial: String){
tasks.append(task(serial: serial))
theList = tasks.map({ (task) -> String in
return task.serial
}).joinWithSeparator("\n")
do {
//try tasksString.writeToFile(pathToFile, atomically: true, encoding: NSUTF8StringEncoding)
print(theList)
}
}
}
我选择了答案。感谢所有帮助治愈我疲惫的眼睛的人。