在我的应用程序中,客户对应用程序内的微服务有不同的访问权限。客户拥有一个管理员,该管理员可以设置其他用户的权限,以控制其用户在应用程序中的访问权限。 所以我将我的PermissionData分成2组。
我的客户 -JSON文件类似于以下内容:
{
"AvailableServices": {
"AssignmentManagement": {
"AssignmentManager": true
},
"UserManagement": {
"DeviceManager": true,
"UserManager": true
}
},
more data..
对应的结构:
// MARK: - AvailableServices
struct AvailableServices: Codable {
let assignmentManagement: AssignmentManagement
let userManagement: UserManagement
enum CodingKeys: String, CodingKey {
case assignmentManagement = "AssignmentManagement"
case userManagement = "UserManagement"
}
}
// MARK: - AssignmentManagement
struct AssignmentManagement: Codable {
let assignmentManager: Bool
enum CodingKeys: String, CodingKey {
case assignmentManager = "AssignmentManager"
}
}
// MARK: - UserManagement
struct UserManagement: Codable {
let deviceManager, userManager: Bool
enum CodingKeys: String, CodingKey {
case deviceManager = "DeviceManager"
case userManager = "UserManager"
}
}
我的用户 -JSON-文件类似于以下内容:
"Permissions": {
"AssignmentManagement": {
"ServiceAccess": true
},
"UserManagement": {
"DeviceManager": {
"ServiceAccess": false
},
"UserManager": {
"CreateUser": true,
"ListUser": true,
"ModifyUser": false,
"ServiceAccess": true
}
}
},
more data..
对应的结构:
// MARK: - Permissions
struct Permissions: Codable {
let assignmentManagement: AssignmentManagement
let userManagement: UserManagement
enum CodingKeys: String, CodingKey {
case assignmentManagement = "AssignmentManagement"
case userManagement = "UserManagement"
}
}
// MARK: - AssignmentManagement
struct AssignmentManagement: Codable {
let serviceAccess: Bool
enum CodingKeys: String, CodingKey {
case serviceAccess = "ServiceAccess"
}
}
// MARK: - UserManagement
struct UserManagement: Codable {
let deviceManager: AssignmentManagement
let userManager: UserManager
enum CodingKeys: String, CodingKey {
case deviceManager = "DeviceManager"
case userManager = "UserManager"
}
}
// MARK: - UserManager
struct UserManager: Codable {
let createUser, listUser, modifyUser, serviceAccess: Bool
enum CodingKeys: String, CodingKey {
case createUser = "CreateUser"
case listUser = "ListUser"
case modifyUser = "ModifyUser"
case serviceAccess = "ServiceAccess"
}
}
我当前的流量:
直到这里,一切正常,但是现在管理员登录并想要创建一个新用户并设置他的权限。 从JSON解码后,我无法显示和使用该结构。 我有一个tableView,客户的管理员可以在其中为用户设置不同的权限。
流量应为:
问题 2 和 3
我什至不知道要解决我的问题我必须搜索哪些关键字。 我阅读了有关镜像类以遍历我的结构的信息。这是一个可靠的建议吗?
编辑:目标是在我的表视图中显示所有可用服务及其可能的权限。在我的tableview内部,管理员可以更改单个权限的值(布尔值)。 也许我的用例的数据结构不正确?!