gpt4 book ai didi

swift - 用户类设计

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:23 26 4
gpt4 key购买 nike

我对设计模式还很陌生,所以我需要帮助来确定设计我正在开发的 iOS 应用的特定部分的好方法。

我有一个 User 对象,代表登录的用户。它非常简单,看起来像这样:

class User {
var firstName: String
var lastName: String
var photo: String //must be stored as a string for the filename.
var listOfJoinedOpportunities = [Opportunity]()
var listOfJoinedOpportunitiesKeys = [String]()
var listOfFriendsOnTheApp: NSArray
var bio: String
var email: String
var userID: String //A unique ID that is used to persist data about the user to the database (Firebase).


init(firstName: String, lastName: String, photo: String, email:String, userID: String, joinedEvents: [Opportunity],joinedStrings: [String]){
self.firstName = firstName
self.lastName = lastName
self.photo = photo
self.listOfJoinedOpportunities = joinedEvents
self.listOfFriendsOnTheApp = []
self.listOfJoinedOpportunitiesKeys = []
self.bio = ""
self.email = email
self.userID = userID
}
}

目前我只需要一个代表已登录用户的实例,但我可以预见如果我添加功能以与应用程序的其他用户交互,我需要这个类。

共有 5 个 View 包括需要读取和写入表示已登录用户的用户对象的交互。

目前,我通过创建新引用在 Controller 之间传递对象。或者,我正在创建一个新对象,该对象表示来自保存到数据库 (Firebase) 的数据中的同一登录用户。

请帮忙!

最佳答案

将对象传递到目标 View 实际上是处理此问题的首选方法 (prepareForSegue)。话虽这么说,您也可以简单地将 User 对象实例存储在您的 AppDelegate 中,并在适合您的模型的情况下轻松地从任何 View 引用它。

在 App Delegate 中存储引用的缺点是困惑,并且在更复杂的情况下可能没有必要,因为它们总是会被分配(以及查找延迟加载)。通常,您希望传递对象,以便先前的 View 可以解除分配,从而降低内存占用。这样,如果您收到内存警告,您可以适本地处理它以正确恢复。

// Set a var in your appDelegate
var user:User?

// Accessing it from any view
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let loggedInUser = appDelegate.user

关于swift - 用户类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com