Swift 如何更好地构建这些数据?
我有以下代码:Swift 如何更好地构建这些数据?,swift,Swift,我有以下代码: class Book { let title = "" let description = "" let ebookPath = "" let featuredCategories = [FeaturedCategory]() let authors = [Author]() let publishers = [Publisher]() //... } class FeaturedCategory { let na
class Book {
let title = ""
let description = ""
let ebookPath = ""
let featuredCategories = [FeaturedCategory]()
let authors = [Author]()
let publishers = [Publisher]()
//...
}
class FeaturedCategory {
let name = ""
let books = [Book]()
}
class Author {
let name = ""
let books = [Book]()
}
class Publisher {
let name = ""
let books = [Book]()
}
class Tag {
let name = ""
let books = [Book]()
}
从上面的代码中可以看出,有很多重复。如果我添加更多具有相同变量name
和books
的类,这会变得更加糟糕。什么是更好的选择
编辑:我正在从Firebase下载JSON。以下是JSON结构:
嗯,这个问题可以从很多方面得到回答,但我会尝试分享我的观点 首先,尝试使用
struct
而不是class
,因为这样可以使体系结构更加灵活
其次,使用协议
创建关系
小例子:
//Struct insted of class
struct Book {
//Usage of the let in struct is good practice.
let title: String
let description: String
let ebookPath: String
let featuredCategories: [FeaturedCategory]
}
//Base protocol
protocol HasBooks {
var name: String { get }
var books: [Book] { get }
}
//Strcut that reuqires to implement name and books.
struct FeaturedCategory : HasBooks {
var name = ""
var books = [Book]()
}
嗯,这个问题可以从很多方面得到回答,但我会尝试分享我的观点 首先,尝试使用
struct
而不是class
,因为这样可以使体系结构更加灵活
其次,使用协议
创建关系
小例子:
//Struct insted of class
struct Book {
//Usage of the let in struct is good practice.
let title: String
let description: String
let ebookPath: String
let featuredCategories: [FeaturedCategory]
}
//Base protocol
protocol HasBooks {
var name: String { get }
var books: [Book] { get }
}
//Strcut that reuqires to implement name and books.
struct FeaturedCategory : HasBooks {
var name = ""
var books = [Book]()
}
最好在问题中包含更多细节。“此数据”非常模糊。您有用于上述内容的JSON吗?请查看editIn类手册,您已经添加了两次“authors”变量。这会导致编译时错误“作者重新声明无效”。请检查一下。我把代码作为例子贴了出来。但是谢谢你指出。在问题中加入更多细节会更好。“此数据”非常模糊。您有用于上述内容的JSON吗?请查看editIn类手册,您已经添加了两次“authors”变量。这会导致编译时错误“作者重新声明无效”。请检查一下。我把代码作为例子贴了出来。但是谢谢你指出。我会为协议选择一个类似HasBooks的名字。这是一个更好的改进,但是如果我有,比方说,20个具有相同精确数据的结构会怎么样?这不是有点奇怪吗?我会为协议选择一个类似HasBooks的名字。这是一个更好的改进,但是如果我有,比方说,20个具有相同精确数据的结构会怎么样?这不是有点奇怪吗?