我对iOS编程和swift非常陌生。我试图创建一个单独的类来存储我的全局数据。我的全局数据是一个结构和这个结构的数组。我希望这个类只有一个实例,因此是一个单例类。所有ViewControllers都应该可以访问和编辑全局数据。我一直在四处寻找,除了最后一个部分,我几乎已经搞清楚了。下面是单例类:
import Foundations
class Global {
struct Info {
var firstname:String!
var lastname:String!
var status:String!
init (firstname:String, lastname:String, status:String)
{
self.firstname=firstname
self.lastname=lastname
self.status=status
}
}
var testString: String="Test" //for debugging
var member:[Info]=[]
class var SharedGlobal:Global
{
struct Static
{static let instance = Global()}
return Static.instance
}
}
现在我想从一些视图控制器访问这个单例类的全局变量。当我在 xcode 中键入此内容时:
Global.SharedGlobal.
我有两个选项,一个是数组成员,另一个是testString。struct Info不可用。但是,如果我只是键入
Global.
然后我看到全球。信息和全球。共享全球作为我的选项。
为什么我不能访问我的单例类中的结构(例如,全局。SharedGlobal.Info)?我错过了什么?我感谢任何反馈或帮助。提前多谢了。
除非有非常具体的原因,否则您不需要这样嵌套类。
让我们简化一下练习的代码:
struct Info {
// No need for these properties to be Implicitly Unwrapped Optionals since you initialize all of them
var firstname: String
var lastname: String
var status: String
init (firstname:String, lastname:String, status:String) {
self.firstname=firstname
self.lastname=lastname
self.status=status
}
}
class Global {
// Now Global.sharedGlobal is your singleton, no need to use nested or other classes
static let sharedGlobal = Global()
var testString: String="Test" //for debugging
var member:[Info] = []
}
// Use the singleton like this
let singleton = Global.sharedGlobal
// Let's create an instance of the info struct
let infoJane = Info(firstname: "Jane", lastname: "Doe", status: "some status")
// Add the struct instance to your array in the singleton
singleton.member.append(infoJane)
现在它对我来说是有意义的。一个包含一些用户信息的结构,我可以创建任意数量的用户实例,还有一个唯一的单例类,如果我可以存储这些信息实例,这个单例可以在任何地方使用。
这是你想要实现的那种事情吗?
问题内容: 我有这个: 我如何才能实际修改全局变量g_c? 问题答案: 通过在访问它的函数中声明它: 在Python文档说这个,有关声明: 全局语句是一个声明,适用于整个当前代码块。
我想让 data 是全局变量方便调用而不是在函数中传来传去,但 const 和 static 关键字好像都不支持。有什么好办法吗?
问题内容: 我是Java的新手,我试图找到一种方法来在C语言中存储诸如结构之类的信息。例如,说我想让一名程序雇用员工。它将从用户那里获得一个名字,姓氏和ID号并将其存储起来。然后,用户可以根据条件查看该信息(例如,如果数据库有多于1名员工)。有没有人建议这样做的最佳方法? 问题答案: C中的结构就像Java中的类一样,功能更强大,因为Java中的类可以包含方法,而C ++可以。您创建一个新类。例如
如何合并数组中的所有结构并生成合并的结构? 例如,使用SparkSQL,我能够读取源json文件并生成数组类型的列,数组中的每个元素都包含一个键:值对。例如,假设我们有一个ArrayType列的值,该列的名称为,值为: 我需要将这个数组类型的列转换为结构类型,其值为{a:1,b:2,c:3}。 由于我是通过读取JSON文件获得模式的,所以我可以使用派生序号获得结果,如: 这个解决方案的问题是,如果
问题内容: 好的,所以我使用Jekyll建立了一个博客,您可以在文件中定义变量,所有模板/布局均可访问该变量。我目前正在使用带有EJS模板和ejs- locals的 Node.JS / Express(用于局部 /布局。我正在寻找与全局变量类似的方法,如果有人熟悉Jekyll ,就会发现这些变量。我有像网站的标题(而不是页面标题),作者/公司名称,在我所有页面上都保持不变。 这是我目前正在做的一个
问题内容: 我正在尝试在文件中创建如下。 问题是我发现了问题 类型“配置”没有成员“窗口” 请让我知道如何解决该问题。 问题答案: 表示该类中有一个对象,事实并非如此。 您将需要与with 一起使用,但这无济于事,因为此窗口实际上并不代表任何现有的窗口,而且它也不是视图控制器。 因此,我建议您将要使用的实际视图控制器传递给该方法: 然后从可使用UIViewController对象的类中调用它。