gpt4 book ai didi

ios - 无法快速符合 objective-c 协议(protocol)

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

我正在尝试实现很棒的库 JSQMessagesViewController但是我不断收到错误“‘ModelMessage’不符合协议(protocol)‘JSQMessageData’”,即使我的类继承自 NSObject 并且我实现了所需的属性

协议(protocol)如下:

@protocol JSQMessageData <NSObject>

@required
- (NSString *)senderId;
- (NSString *)senderDisplayName;
- (NSDate *)date;
- (BOOL)isMediaMessage;
- (NSUInteger)messageHash;

@optional
- (NSString *)text;
- (id<JSQMessageMediaData>)media;

@end

这是我的课

import Foundation

class ModelMessage: Model, JSQMessageData {

/* Required */
var senderId: NSString
var senderDisplayName: NSString
var date: NSDate
var isMediaMessage: Bool
var messageHash: UInt
/**/

var text_: String

var id:String!
var conversationId: String!
var imageUrl: String?
var recipientId: String!
var recipientRead: Bool!

var avatar: NSData?


init(data: NSDictionary){

super.init()

/* Required */
self.senderId = getStringFromJSON(data, key:"senderId")
self.senderDisplayName = "Me"
let dateString = getStringFromJSON(data, key: "timeStamp")
let dateDouble = (dateString as NSString).doubleValue / 1000.0
self.date = NSDate(timeIntervalSince1970: dateDouble)
self.isMediaMessage = false
/**/

self.text_ = getStringFromJSON(data, key:"text")

self.id = getStringFromJSON(data, key:"id")
self.conversationId = getStringFromJSON(data, key:"conversationId")
self.recipientId = getStringFromJSON(data, key:"recipientId")
self.recipientRead = data["recipientRead"] as! Bool

}

}

继承自

import Foundation

class Model: NSObject
{

func getStringFromJSON(data: NSDictionary, key: String) -> String {

if let info = data[key] as? String{
return info
}
return ""

}

}

最佳答案

在实现没有可空性注释的 ObjC 协议(protocol)时,尝试使用隐式展开的可选值。此外,您可以而且应该始终使用 String 而不是 NSString

var senderId: String!
var senderDisplayName: String!
var date: NSDate!
var isMediaMessage: Bool
var messageHash: UInt

@objc 注释整个类和/或属性也有帮助。

如果仍然不起作用,请检查构建日志,因为它会告诉您缺少或未正确实现的协议(protocol)功能。

关于ios - 无法快速符合 objective-c 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210534/

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