不符合协议

does not conform to protocol

提问人:Robert Marlan 提问时间:12/27/2022 最后编辑:Robert Marlan 更新时间:12/27/2022 访问量:89

问:

我正在从 Swift 3.0 重新编写此代码。

extension WallPost: PFSubclassing {

static func parseClassName() -> String { return "WallPost" } }

这将生成错误:

类型“WallPost”不符合协议“PFSubclassing” 不可用的类方法“object()”用于满足协议“PFSubclassing”的要求

知道为什么会发生这种情况以及我该如何解决它吗?我想在更新到 Swift 4.0 / 5.0 之前解决这个问题。

代码如下:

import Foundation

final class WallPost: PFObject {
  
  // MARK: - Properties
  @NSManaged var image: PFFile
  @NSManaged var user: PFUser
  @NSManaged var comment: String?
  
  // MARK: - Initializers
  init(image: PFFile, user: PFUser, comment: String?) {
    super.init()
    self.image = image
    self.user = user
    self.comment = comment
  }
  
  // Required otherwise the application crashes
  override init() {
    super.init()
  }
  
  // MARK: - Overridden
  override class func query() -> PFQuery<PFObject>? {
    let query = PFQuery(className: WallPost.parseClassName())
    query.includeKey("user")
    query.order(byDescending: "createdAt")
    return query
  }
}

// MARK: - PFSubclassing
extension WallPost: PFSubclassing {
  
  static func parseClassName() -> String {
    return "WallPost"
  }
}
Swift 解析平台

评论

0赞 Joakim Danielson 12/27/2022
你需要解释一下PFSubclassing是什么,也许可以共享代码,否则这个问题没有多大意义。
0赞 Robert Marlan 12/27/2022
对不起 - 这是代码......
0赞 Joakim Danielson 12/27/2022
那不是协议......
0赞 Robert Marlan 12/27/2022
你能澄清一下吗?问题是什么,我该如何解决?谢谢1
0赞 Joakim Danielson 12/27/2022
问题是错误消息抱怨名为 PFSubclassing 的协议,但您没有在问题中包含该协议的声明或解释它是什么,如果没有该知识,没有人可以帮助您。

答:

0赞 andylee 12/27/2022 #1

我不知道parseplatform是什么,但您必须实现以下方法来满足协议要求。

+objectWithoutDataWithObjectId:

+查询

+queryWithPredicate:

+registerSubclass