【问题标题】:Fatal error: 'try!' expression unexpectedly raised an error: Swift.DecodingError.keyNotFound(CodingKeys(stringValue: "hours", intValue: nil)致命错误:\'try!\' 表达式意外引发错误:Swift.DecodingError.keyNotFound(CodingKeys(stringValue: \"hours\", intValue: nil)
【发布时间】:2022-11-28 11:09:00
【问题描述】:

所以我遇到了一个奇怪的错误,我不明白为什么,而且在添加新项目之前没有发生过这种情况。

所以这是我得到的错误:

致命错误:“尝试!”表达式意外引发错误: Swift.DecodingError.keyNotFound(CodingKeys(stringValue: "小时", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "没有与键关联的值 CodingKeys(stringValue: "hours", intValue: nil) ("hours").", 底层错误:无))


这是我的设置:

地点.斯威夫特:

import SwiftUI
import MapKit

struct Place: Codable, Identifiable {
    
    // MARK: - DEFINE PROPERTIES
    let id: Int
    var b4aId = ""
    var admission: String
    var website: String
    var hours: String
    var show = false
    
    // MARK: - SET DEFAULT PROPERTIES
    static var `default` : Place {
        Place(
            id: 0,
            admission: "Free",
            website: "Website",
            hours: "Hours"
        )
    }
    
    init(
        id: Int,
        admission: String,
        website: String,
        hours: String,
        show: Bool = false
    ) {
        self.id = id
        self.admission = admission
        self.website = website
        self.hours = hours
        self.show = show
    }
    
    init(with p: MGLocation) {
        self.id = atomicId.wrappingIncrementThenLoad(ordering: .relaxed)
        self.b4aId = p.objectId ?? ""
        self.admission = p.admission ?? ""
        self.website = p.website ?? ""
        self.hours = p.hours ?? ""
        self.show = false
    }
}

MGLocation.swift:

import Foundation
import ParseSwift

// MARK: - SET MGLOCATION PARSE OBJECT
struct MGLocation: ParseObject {
    
    // Parse Properties
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var originalData: Data?
    var ACL: ParseACL?
    
    // Custom Properties
    var admission: String?
    var website: String?
    var hours: String?
    
    // Initialization
    init() {}
    init(objectId: String?) {
        self.objectId = objectId
    }
}

笔记:

admissionwebsite 工作得很好,但是一旦我添加 hours 它就会使应用程序崩溃。

数据库有正确的列,所以我不知道与其他人相比我做错了什么。

另外,有没有更简单的方法来编写 Place 类而不违背这么多的键实例?

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    错误消息告诉您,在您尝试解码的至少一个实体中没有 hours。为了解决这个问题,请将您的hours 属性设为可选。

    struct Place: Codable, Identifiable {
        
        // MARK: - DEFINE PROPERTIES
        let id: Int
        var b4aId = ""
        var admission: String
        var website: String
        var hours: String? // change this to an optional
        var show = false
        
        // MARK: - SET DEFAULT PROPERTIES
        static var `default` : Place {
            Place(
                id: 0,
                admission: "Free",
                website: "Website",
                hours: "Hours"
            )
        }
        
        init(
            id: Int,
            admission: String,
            website: String,
            hours: String,
            show: Bool = false
        ) {
            self.id = id
            self.admission = admission
            self.website = website
            self.hours = hours
            self.show = show
        }
        
        init(with p: MGLocation) {
            self.id = atomicId.wrappingIncrementThenLoad(ordering: .relaxed)
            self.b4aId = p.objectId ?? ""
            self.admission = p.admission ?? ""
            self.website = p.website ?? ""
            self.hours = p.hours ?? ""
            self.show = false
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多