In Swift, sto importando una libreria statica scritta in Objective-C. Il protocollo seguente, in quella libreria, ha un metodo e una proprietà.
@class Message;
@protocol LocalService
@property (readonly) int action;
- (Message *)getResponse:(Message *)request;
@end
Cercando di avere una classe conforme a quel protocollo, trasporta i messaggi di seguito:
1-) tipo 'ShowInitialViewLocalService' non è conforme al protocollo 'LocalService
2-) Estensioni non può contenere proprietà memorizzate
Il codice fornito di seguito risolve questo problema:
import UIKit
class ShowInitialViewLocalService: NSObject{
}
extension ShowInitialViewLocalService : LocalService {
var action: Int32 {
get { return View.InitialView.rawValue }
}
func getResponse(_ request: Message) -> Message {
let response = Response(source: request.target, target: request.source, relatedView: View.InitialView.rawValue, action: request.action, data: request.data)
return response
}
}
Spero che questo aiuti qualcuno.
fonte
2017-10-04 07:52:50
Questa tecnica funziona ma non aggiorna l'interfaccia utente nello xib/storyboard. –
Do 'setNeedsLayout()' dopo l'impostazione. –