【发布时间】:2020-03-20 03:02:49
【问题描述】:
我想知道是否有办法用泛型更好地做到这一点。我有这个单例,每个对象都需要一个 setter 和另一个 getter。另外,我必须检查每个 getter 中的属性是否为零,这是很多重复的代码。例如:
class DataManager : NSObject {
private override init(){}
private var postData : [PostModel]?
private var userData : [UserModel]?
private var commentsData : [CommentsModel]?
private var photosData : [PhotosModel]?
private var albumsData : [AlbumsModel]?
private var todosData : [TodosModel]?
static let shared = DataManager()
//MARK : Setters
func setUserData(data : [UserModel]) {
self.userData = data
}
func setPostData(data : [PostModel]) {
self.postData = data
}
func setCommentsData(data : [CommentsModel]) {
self.commentsData = data
}
func setAlbumsData(data : [AlbumsModel]) {
self.albumsData = data
}
func setPhotosData(data : [PhotosModel]) {
self.photosData = data
}
func setTodosData(data : [TodosModel]) {
self.todosData = data
}
//MARK : Getters
func getUserData() -> [UserModel]? {
if self.userData != nil {
return self.userData!
}
return nil
}
func getPostData() -> [PostModel]? {
if self.postData != nil {
return self.postData!
}
return nil
}
func getCommentsData() -> [CommentsModel]? {
if self.commentsData != nil {
return self.commentsData!
}
return nil
}
func getAlbumsData() -> [AlbumsModel]? {
if self.albumsData != nil {
return self.albumsData!
}
return nil
}
func getPhotosData() -> [PhotosModel]? {
if self.photosData != nil {
return self.photosData!
}
return nil
}
func getTodosData() -> [TodosModel]? {
if self.todosData != nil {
return self.todosData!
}
return nil
}
}
我想知道是否所有这些逻辑都可以在一个方法中完成,也许使用泛型?
【问题讨论】:
-
开始声明你的数组是非可选的,并用一个空集合
[ ]初始化它们。顺便说一句,从您的属性和类型中删除 Data 和 Model 关键字,并且不要继承NSObject -
class Manager { var posts: [Post] = [] var users: [User] = [] var comments: [Comment] = [] var photos: [Photo] = [] var albums: [Album] = []... 等等