en el objetivo-C:
@interface CustomDataSource : NSObject <UITableViewDataSource>
@end
en Swift:
class CustomDataSource : UITableViewDataSource {
}
Sin embargo, aparecerá un mensaje de error:
- El tipo 'CellDatasDataSource' no se ajusta al protocolo 'NSObjectProtocol'
- El tipo 'CellDatasDataSource' no se ajusta al protocolo 'UITableViewDataSource'
¿Cuál debería ser la forma correcta?
objective-c
swift
YuXuan Fu
fuente
fuente

Respuestas:
Tienes que hacer que tu clase herede de
NSObjectconformidad conNSObjectProtocol. Las clases de Vanilla Swift no. Pero muchas partes deUIKitesperarNSObjects.Pero esto:
Se espera. Recibirá el error hasta que su clase implemente todos los métodos requeridos del protocolo.
Así que consigue la codificación :)
fuente
Una clase tiene que heredar de una clase padre antes de cumplir con el protocolo. Hay principalmente dos formas de hacerlo.
Una forma es hacer que su clase herede
NSObjecty se ajuste a la claseUITableViewDataSource. Ahora, si desea modificar las funciones en el protocolo, debe agregar una palabra claveoverrideantes de la llamada a la función, de esta maneraSin embargo, esto a veces ensucia su código porque puede tener muchos protocolos que cumplir y cada protocolo puede tener varias funciones de delegado. En esta situación, puede separar el código conforme del protocolo de la clase principal mediante el uso
extension, y no necesita agregar unaoverridepalabra clave en la extensión. Entonces el equivalente del código anterior seráfuente
Xcode 9, ayuda a implementar todos los métodos obligatorios de Swift Datasource & Delegates.
Aquí hay un ejemplo de
UITableViewDataSource:Muestra advertencia / sugerencia para implementar métodos obligatorios:
Haga clic en el botón 'Reparar', agregará todos los métodos obligatorios en el código:
fuente