gpt4 book ai didi

swift - 类型转换 [字符串 :String] to my own Class in Swift 3

转载 作者:行者123 更新时间:2023-11-28 09:35:49 25 4
gpt4 key购买 nike

我正在尝试将字典转换或转换为对象,但我不确定该怎么做。

这是我的课:

import Foundation

class DTOStore: NSObject {

var _Id: Int64?
var _StoreId:String?
var _Name:String?
var _Address:String?

var Id: Int64 {
get {
return _Id!
}
set (pValue) {
_Id = pValue
}
}

var StoreId:String {
get {
return _StoreId!
}
set (pValue) {
_StoreId = pValue
}
}

var Name:String {
get {
return _Name!
}
set (pValue) {
_Name = pValue
}
}

var Address:String {
get {
return _Address!
}
set (pValue) {
_Address = pValue
}
}
}

我想做这样的事情:

let vDTOStore:DTOStore = SQLiteConnectionManager.selectRowDatabase(vCommand, pNumColumns: 4) as! DTOStore

SQLiteConnectionManager.selectRowDatabase(vCommand, pNumColumns: 4) 的结果是一个 [String:String] 字典,考虑到该函数将被转换为许多不同的对象,这就是为什么它总是返回一个 [String] :字符串].

但正如您所猜测的那样,它不起作用,而且我不知道该怎么做。

感谢您的帮助。

最佳答案

您不能将字典转换到自定义对象。
您需要通过编写适当的初始化程序来映射它。

你的对象可以减少到

class DTOStore: NSObject {

let id: Int64
let storeId: String
var name: String
var address: String

init(dictionary: [String:String]) {
self.name = dictionary["name"] ?? ""
self.storeId = dictionary["storeId"] ?? ""
self.address = dictionary["address"] ?? ""
let idString = dictionary["id"] ?? "0"
self.id = Int64(idString) ?? 0
}

var dictionaryRepresentation : [String:String] {
return ["name" : name, "storeId" : storeId, "address" : address, "id" : "\(id)"]
}
}

如果键不存在,则值设置为空字符串/0。
idstoreId 声明为常量 (let)。


PS:由于字典的来源是一个 SQL 数据库,它将始终返回 all 记录中的 all 请求字段,如果这些字段声明为非 NULL,您甚至可以写

    init(dictionary: [String:String]) {
self.name = dictionary["name"]!
self.storeId = dictionary["storeId"]!
self.address = dictionary["address"]!
self.id = Int64(dictionary["id"]!)
}

关于swift - 类型转换 [字符串 :String] to my own Class in Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43522436/

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