代码之家  ›  专栏  ›  技术社区  ›  shehryar khan

参数标签'(内容:)'不匹配任何可用的重载,swift、vapor、vapor中的rest,使用postgresql

  •  0
  • shehryar khan  · 技术社区  · 8 年前

    错误参数标签'(内容:)'与任何可用重载都不匹配。在vapor中使用postgresql来获得可表示的json。model controller的语法如下所示,表示数据库中的内容

    import Foundation
    import Vapor
    import FluentProvider
    import PostgreSQLProvider
    
    
    final class dataPointStorage: Model, JSONRepresentable, NodeRepresentable {
    
    //  var _data: dataPointProtocol?
    //    var _data:[dataPointProtocol] = []
        let storage = Storage()
        var id: Node?
        var name:String
        var displayName:String
        var content:String
    //    let temp = dataPointStorage()
    
    
        init(node:Node ,content: String?, displayName:String, name:String) {
            self.id = nil
            self.displayName = displayName
            self.name = name
        }
    
            static let idKey = "id"
            static let contentKey = "content"
    
    
    
        func forDataBase() {
    
    
            let array:[berichtDataPoint] = [intDataPoint(), boolDataPoint(), doubleDataPoint()]
    
            let _ = array[0] as! intDataPoint
            let _ = array[1] as! doubleDataPoint
    
    
            for point in array {
    
                switch point {
                case is  intDataPoint:
                    print("int")
                case is doubleDataPoint:
                    print("double")
                case is boolDataPoint:
                    print("bool")
                default:
                    print("error")
                }
            }
    
        }
    
      func makeRow() throws -> Row {
            var row = Row()
            try row.set("id", id)
            try row.set("displayName", displayName)
            try row.set("name", name)
            return row
        }
    
        init(row: Row) throws {
            id = try row.get("id")
            displayName = try row.get("displayName")
            name = try row.get("name")
        }
    
        func makeNode(context: Context) throws -> Node {
            return try Node(node: [
                "id": id,
                "displayName": displayName,
                "name": name
                ])
        }
    }
    
    extension dataPointStorage: Preparation {
        static func prepare(_ database: Database) throws {
            try database.create(self) { dataPointStorage in
                dataPointStorage.id()
                dataPointStorage.string("displayName")
                dataPointStorage.string("name")
                dataPointStorage.string("content")
    
            }
        }
    
        static func revert(_ database: Database) throws {
            try database.delete(dataPointStorage)
        }
    }
    
    extension dataPointStorage: JSONConvertible {
        convenience init(json: JSON) throws {
            try self.init(
           error here¶¶¶ content: json.get(dataPointStorage.contentKey)¶¶¶¶ error
            )
        }
    
        func makeJSON() throws -> JSON {
            var json = JSON()
            try json.set("id", id)
            try json.set("name", name)
            try json.set("displaName", displayName)
            try json.set("content", Content)
    
            return json
        }
    }
    

    我在vapor中遵循rest作为JSON表示的一般上下文,但没有找到解决这个简单错误的原因。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Caleb Kleveter smit vashi    8 年前

    看起来你想把这个叫做init?

    init(node:Node ,content: String?, displayName:String, name:String)
    

    如果是这种情况,则需要传入其余参数,因为它们没有可用的默认值:

    convenience init(json: JSON) throws {
        try self.init(
            node: <VALUE>,
            content: json.get(dataPointStorage.contentKey),
            displayName: <VALUE>,
            name: <VALULE>
        )
    }
    

    推荐文章