【问题标题】:Using String in another swift class在另一个 swift 类中使用 String
【发布时间】:2015-10-24 22:37:15
【问题描述】:

我正在尝试在我的项目的另一个类中使用名为“theList”的字符串数组。我了解该变量是在方法中声明的,因此不属于全局范围。但是我该如何解决呢?我已经尝试了一些东西,但没有任何效果。实现这一目标的最佳方法是什么?

编辑:我要做的就是将“theList”设置为等于“Body” [![在此处输入图片描述][1]][1]

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

【问题讨论】:

标签: ios arrays xcode string swift


【解决方案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
    })
  }
}

【讨论】:

  • 谢谢,但我想在课堂外访问它。我正在尝试在另一个文件中打印列表并查看
  • 您要保存它并稍后将其加载到另一个类中?
  • 是的。我还有另一堂课要通过电子邮件发送“theList”的内容。但在那个类中,它告诉 theList 未解决。
【解决方案2】:

最好的方法是查看类的范围和声明。在您想使用它的任何地方定义您的列表,或使其成为全球性的。我就是这样做的。有时将其添加到更高级别的类声明中,有时我将其设为全局,例如整个程序。取决于编码时的任务和我的前景。

【讨论】:

  • 谢谢。你会怎么做?
  • 假设您希望变量是全局的。首先通过 google 或 bing 搜索有关如何在 Xcode 中使事物全球化的示例。可以说我想为一个 int 类型变量做这件事。然后,我将 int myInt = 0;主要以外的某个地方。如果您的类变量依赖于其他变量的定义,那么您必须在文件中以正确的顺序将它们全部获取。如果您搜索“Xcode 中的全局变量”之类的短语,应该有一个很好的示例。
【解决方案3】:

然后让你函数返回添加任务的结果:

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
    }
} 

然后通过实例访问它。

【讨论】:

  • 我想在另一个 swift 文件中打印列表。
  • @user2913654 然后试试public class TaskManager
  • 当我调用它时,我确实尝试过它仍然显示“使用未解析的标识符 'theList'”
  • @user2913654 看到那个帖子,也许它会帮助你stackoverflow.com/questions/24333142/…
  • 这并没有真正帮助我。有点让我困惑,哈哈,我会给你一个更好的例子。
【解决方案4】:

在类上方添加 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)

    }
  }
}

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

【讨论】:

  • 我看到您将 theList 和 taskMgr 放在全局范围内。也许将 addTask 设为 class func 并将 theList 设为 static var 会更容易,因为这样您就不需要 TaskManager 的实例,并且只需使用 TaskManager 即可访问列表。列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2015-01-20
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
相关资源
最近更新 更多