मैं यह करने की कोशिश कर रहा हूँ, लेकिन मैं कुछ मुसीबतोंस्विफ्ट जेनरिक स्थगित कर इस मुद्दे को
यह CustomProtocol
protocol CustomProtocol {
}
SubCustomProtocol
protocol SubCustomProtocol: CustomProtocol {
}
SubCustomProtocolImplementation
class SubCustomProtocolImplementation: SubCustomProtocol {
}
है हो रही है
यह CustomClass
class CustomClass<P: CustomProtocol> {
var customProtocol: P?
func doSomething() {
}
}
SubCustomClass
class SubCustomClass<P: SubCustomProtocol>: CustomSubClass {
}
और मेरे BaseViewController
class BaseViewController<P: CustomProtocol, T: CustomClass<P>>: UIViewController {
var foo: T!
override func viewDidLoad() {
super.viewDidLoad()
foo?.doSomething()
}
}
मेरे ViewController
class ViewController<P: SubCustomProtocolImplementation, T: SubCustomClass<P>>: BaseViewController<P,T> {
override func viewDidLoad() {
super.viewDidLoad()
}
}
लाइन जहां मैं foo फोन में है? .doSomething() यह कहते हैं कि 'टी' 'CustomClass <' पी '>' के एक उप प्रकार नहीं है और मुझे लगता है मैं क्या कर रहा हूं पता नहीं है गलत
और ViewController घोषणा में यह कहना है कि "BaseViewController की आवश्यकता है कि टी CustomClass से विरासत < 'पी'> "
आशा है कि आप मेरी मदद कर सकते हैं!
मुझे यह त्रुटि नहीं मिल रही है। कम से कम खेल के मैदान में। क्या आप वाकई पूर्ण संदर्भ प्रदान कर रहे हैं? – iyuna
@Iyuna मुझे कुछ खेद है! मैंने प्रश्न –
संपादित किया है ऐसा लगता है, एक सामान्य पैरामीटर द्वारा एक प्रकार पैरामीटर को बाधित नहीं किया जा सकता है। यह _can_ किसी वर्ग या प्रोटोकॉल द्वारा बाध्य होना चाहिए। – CouchDeveloper