我正在设置我的快速代码以使用MySQL数据库.到目前为止,我只使用过Firebase/FiRestore.我已经通过CocoaPods安装了OHMySQL库.我对对象映射的工作原理感到困惑.我添加了一个如何使用FiRestore来完成此操作的示例.

func fetchProductData(){
        
        let db = Firestore.firestore()
        
        db.collection("Products").getDocuments { (snap, err) in
            
            guard let productData = snap else{return}
            
            self.products = productData.documents.compactMap({ (doc) -> Product? in
                
                let id = doc.documentID
                let name = doc.get("product_name") as? String ?? "No product name"
                let image = doc.get("product_image") as? String ?? "No product image"
                let details = doc.get("product_details") as? String ?? "No product details"
                let website = doc.get("product_website") as? String ?? "No product website"
                let stock = doc.get("product_stock") as! Int
                let uid = doc.get("product_uid") as? String ?? "No uid"
                
                return Product(id: id, product_name: name, product_image: image, product_details: details, product_website: website, product_stock: stock, product_uid: uid)
            })
            
            self.filteredProduct = self.products
        }
    }

我相信,因为我使用的是SWIFT,所以我不能使用基本数字类型(Int、Double),只能使用NSNnumber.

使用MySQL数据库时,这种映射会是什么样子?

推荐答案

以下是如何获取产品名称数据的示例:

func fetchProductData() {
    
    let url = URL(string: "INSERT YOUR URL HERE")!
    
    //2.
    URLSession.shared.dataTask(with: url) {(data, response, error) in
        
        do {
            if let todoData = data {
                //3.
                let decodedData = try JSONDecoder().decode([Product].self, from: todoData)
                DispatchQueue.main.async {
                    self.products = decodedData
                    
                    self.filteredProduct = decodedData
                    
                }
                
                //Fetching name of product
                decodedData.forEach { course in print(course.product_name)}
                
            } else {
                print("No Data")
            }
            
        } catch {
            print(error)
        }
        
    }
    .resume()

}

Ios相关问答推荐

将图案UI视图动画化以模拟进度条

如何调整包含extView的UICollectionViewListCell的大小?

Nomb iOS 17.4.0中崩溃

SWIFT中具有可选返回类型和泛型的网络请求

在Swift5中,将某些属性值从一个类复制到另一个类实例

XcodeCloud生成失败,返回";ci_pre_xcodeBuild.sh是可执行文件,但退出时返回2个退出代码.";

使用标头UICollectionViewFlowLayout时的简单SwiftUI视图错误

表视图(SwiftUI)中的多列?

Xcode 14 需要为 Pod Bundles Select 开发团队

Xcode - 错误 ITMS-90635 - Bundle 包中的 Mach-O 无效 - 提交到 App Store

如何在通用应用程序中同时支持 iPad 和 iPhone 视网膜图形

iOS 8 - 使用自定义演示关闭视图控制器后屏幕空白

如何在 Swift 中使用包含多个值的查询参数构建一个 URL?

~= Swift 中的运算符

iOS 7 圆形框架按钮

Sierra 中的安全/协同设计: keys 串忽略访问控制设置和 UI 提示权限

找不到开发者磁盘映像

未找到符号:kUTTypeImage

iOS13状态栏背景 colored颜色 与大文本模式下的导航栏不同

iOS 7 应用程序图标、启动图像和命名约定,同时保留 iOS 6 图标