在另一个swift类中使用String

时间:2015-10-24 22:37:15

标签: ios arrays xcode string swift

我正在尝试在项目的另一个类中使用名为“ theList ”的字符串数组。我知道变量是在方法中声明的,因此不是全局范围。但是我该如何解决这个问题呢?我尝试了一些事情,没有任何工作。完成此任务的最佳方法是什么?

编辑:我想做的就是将“theList”设置为“Body” [![在此处输入图像说明] [1]] [1]

我希望这会清除一点,我可以选择一个答案。谢谢大家!

4 个答案:

答案 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)

    }
  }
}

我选择了答案。感谢所有帮助治愈我疲惫的眼睛的人。