[英]MFMailComposeViewControllerDelegate not conform to protocol NSObjectProtocol
[英]Swift : Type XXX must conform to protocol 'NSObjectProtocol'
我正在尝试实现一个必须的Swift类
虽然我继承的Objective-C类继承自NSObject,但我收到以下编译错误:
Type DDBItem must conform to protocol 'NSObjectProtocol'
我继承/实现的Objective-C类和Objective-C协议可以在https://github.com/aws/aws-sdk-ios/blob/master/DynamoDB/AWSDynamoDBObjectMapper.h上找到。
AWSDynamoDBModel有一个很长的继承链,最终从NSObject开始AWSDynamoDBModeling强制执行两个类变量。
我的代码是
class DDBItem : AWSDynamoDBModel, AWSDynamoDBModeling {
// class var dynamoDBTableName : String { get { return "" }}
// class var hashKeyAttribute : String { get { return "" }}
class func dynamoDBTableName() -> String! {
return ""
}
class func hashKeyAttribute() -> String! {
return ""
}
}
Bonus问题:当试图将Objective-C协议强制类变量实现为Swift类变量时,我收到一个编译错误:
Type DDBItem must conform to protocol 'AWSDynamoDBModeling'
将它们作为函数实现似乎是可以接受的。 为什么?
只是继承自NSObject:
class DDBItem : NSObject, AWSDynamoDBModel, AWSDynamoDBModeling {
为了存档,自我回答。
添加时
override func isEqual(anObject: AnyObject?) -> Bool {
return super.isEqual(anObject)
}
我的班级,它的工作原理。 此方法应该已从基类继承。
看起来像Swift / Xcode 6.1中的一个错误
对于那些偶然发现这篇文章的人来说,只是一个头脑。 AWSDynamoDBModeling
协议已在最新的SDK(v2.1.1)中进行了更改。 必需的函数: dynamoDBTableName
和hashKeyAttribute
必须是静态的。 截至今日(2015年5月27日)的文件似乎已过时。
例:
class Dingle:AWSDynamoDBObjectModel, AWSDynamoDBModeling {
static func dynamoDBTableName() -> String! {
return "dev_coupons"
}
static func hashKeyAttribute() -> String! {
return "status "
}
func rangeKeyAttribute() -> String! {
return "post_date"
}
override func isEqual(object: AnyObject?) -> Bool {
return super.isEqual(object)
}
}
确认! 以这种方式编写函数:
static func dynamoDBTableName() -> String {
return "pb_Test"
}
static func hashKeyAttribute() -> String {
return "ID"
}
你必须包括这个:
override func isEqual(anObject: AnyObject?) -> Bool {
return super.isEqual(anObject)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.