我有一个以登录页面开头的故事板。我有一个像这样的用户类
class User {
// Properties
var firmCode : String
var firmId : String
var userId : String
// Default Initializer
init() {
self.firmCode = ""
self.firmId = ""
self.userId = ""
}
// Defult Initializer with prams
init(firmCode: String, firmId: String, userId: String) {
self.firmCode = firmCode
self.firmId = firmId
self.userId = userId
}
}
我在登录页面中生成了一些值,我可以用这些值创建我的User对象。
现在我想将此对象设为全局,并在所有场景中使用此用户对象。
如何将此对象传递给其他场景?例如,我想将此值与我的对象一起传递给嵌入式静态表视图控制器,如此
注意:重要的是,嵌入式控制器有标签栏控制器吗?我想我需要使用我的委托文件?
编辑:
现在我已经创建了这样的全局对象:
// test value
let firmId = "Company Id"
// Creating user object without user class declaration
NSUserDefaults.standardUserDefaults().setObject(firmId, forKey: "testFirmId")
试图让我的对象像这样:
// Creating user variable in other scene by globally
let getValue : AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("testFirmId")
// checking
println(getValue!)
完成后,返回我的termanal值。所有工作都在这里。
但是现在这个值以AnyObject的形式返回给我,我需要将它转换为String来应用如下:
someLabel.text = getValue!
答案 0 :(得分:4)
您可以使用NSUserDefaults
,就像您可以这样存储对象一样:
NSUserDefaults.standardUserDefaults().setObject(YourObject, forKey: "YouKey")
之后,您可以在任何场景中访问它,如:
let yourObject: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("YouKey")
希望它会对你有所帮助。
修改强>
NSUserDefaults
的处理类型有限:NSData
,NSString
,NSNumber
,NSDate
,NSArray
和{{ 1}}。因此,不能保存Swift对象或结构。
来自Apple NSDictionary
文档:
默认对象必须是属性列表,即(或 对于集合的实例组合):NSData,NSString, NSNumber,NSDate,NSArray或NSDictionary。如果你想存储任何 在其他类型的对象中,通常应将其存档以创建 NSData的实例。
如果您使用的是NSUserDefaults
,那么您可以直接存储您的实例,如下所示:
NSUserDefaults
你不需要那个模型类。
答案 1 :(得分:0)
float (*mat)[3];
mat = hydra.controllerRight.rot_mat;
float x1 = mat[0][0];
float x2 = mat[0][1];
float x3 = mat[0][2];
float x4 = 0;
float y1 = mat[1][0];
float y2 = mat[1][1];
float y3 = mat[1][2];
float y4 = 0;
float z1 = mat[2][0];
float z2 = mat[2][1];
float z3 = mat[2][2];
float z4 = 0;
float w1 = 0;
float w2 = 0;
float w3 = 0;
float w4 = 1;
// my 4x4 rotation matrix
MatrixF rotMat( x1, x2, x3, x4,
y1, y2, y3, y4,
z1, z2, z3, z4,
w1, w2, w3, w4 );
//为其他变量分配值
//在NSUserDefaults中保存用户对象,如下所示
var user = User()
self.user.firmCode = 1
//保存用户的功能
User.saveUserObject(user)
//从NSUserDefaults获取用户对象
class func saveUserObject(user : User){
let userKey = "UserData \(user.userID)"
NSUserDefaults.standardUserDefaults().setObject(data, forKey: userKey)
}
答案 2 :(得分:0)
如果您真的想要一个全局用户对象,只需在全局创建它,意味着超出任何范围。 Tadaa!您可以从任何地方访问它。
var globalUser = User()
// This is where your 'normal code' starts
class [....]