我们正在尝试将基于基础的Swift版本最近升级到4.2。不幸的是,在升级时发现了很多问题。我们无法解决当前问题的其中之一是:
在以下代码中得到该错误:
不支持从扩展名覆盖非@objc声明
class MyHelpTableViewCell: WMHelpTableViewCell {
}
extension MyHelpTableViewCell {
@objc class dynamic var nib: UINib {
return UINib(nibName: "MyHelpTableViewCell", bundle: nil)
}
如果您有经验,请帮助我解决该问题。非常感谢。
更新: 如果我像这样添加了@objc和dynamic,
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 8081;
app.use(bodyParser.json());
// Allow callers to send an email message
app.post('/send_email', function(req, res){
console.log('send_email body: ', req.body);
sendEmail(req.body);
res.status(201).json({status: 'success' });
});
app.listen(port);
function sendEmail(emailObj) {
// Send the mail
}
以下错误相同,
不支持从扩展名覆盖非@objc声明
答案 0 :(得分:1)
错误很明显:
您必须将覆盖方法从extension
移到class
或者您必须用@objc
和@dynamic
标记基类中的声明
class BaseTableViewCell : UITableViewCell {
@objc class dynamic var identifier : String { return "something" }
}
答案 1 :(得分:1)
您无需扩展即可实现以下目标:
class WMHelpTableViewCell {
var identifier: String!
}
class MyHelpTableViewCell : WMHelpTableViewCell {
override var identifier: String? {
get {
return self.identifier
}
set {
self.identifier = newValue
}
}
}