草庐IT

UIApplicationDelegate_Protocol

全部标签

swift - 为什么我的简单协议(protocol)只能用作通用约束?

我正在尝试做一些用于依赖注入(inject)的协议(protocol)组合,但我遇到了一个问题,我怀疑可能没有我想要的解决方案,但我看不到逻辑原因:protocolDM1{funcsayHi()->Void}protocolDM2{funcsayHello()->Void}protocolVM1{typealiasT:DM1vardm:T{get}}protocolVM2{typealiasT:DM2vardm:T{get}}protocolRT:VM1,VM2{}classJames{letrt:RTinit(rt:RT){self.rt=rt}}上面的代码在rt上导致错误“Prot

swift - 类型 "T?"不符合协议(protocol) 'Equatable'

我有一个类似于这个的通用类:classC{lett:Tinit(t:T){self.t=t}}当我尝试将Int?包装在里面时,出现以下错误://ERROR:Type"Int?"doesnotconformtoprotocol'Equatable'letc=C(t:nil)快速测试表明Int?确实是Equatable:leta:Int?=5letb:Int?=6letc=a==b//NOERROR也许我今天太累了? 最佳答案 情报?不是平等的您需要T成为Equatable.但是你正在传递Int?(Optional的简写符号)不是Equ

swift - 当某些协议(protocol)函数更改其签名时,我可以强制编译器失败吗?

有没有办法将某些Swift函数标记为实现某些协议(protocol)函数,这样如果协议(protocol)的签名发生变化,编译器就可以将实现标记为错误。例如,考虑这个例子,我有一个UIViewController实例的Foo协议(protocol)的默认实现,我想为自定义Bar覆盖它类是UIViewController的子类。//V1protocolFoo{funcnumber()->Int}extensionFoowhereSelf:UIViewController{funcnumber()->Int{return0}}//Overridesthedefaultimplementat

objective-c - 为什么需要 '@objc' 来检查 Swift 中的协议(protocol)一致性?

Apple的SwiftProgrammingLanguageGuide指出Youcancheckforprotocolconformanceonlyifyourprotocolismarkedwiththe@objcattribute如果我不与Objective-C互操作,为什么有必要这样做? 最佳答案 Swift1.2更新正如RyanM指出的那样,语言发生了变化,不再需要@objc关键字。事实上,下面的简单示例现在可以在没有@objc关键字的情况下工作:protocolAp{funchello()}classA:Ap{funche

ios - Swift-自定义 UITableViewCell 委托(delegate)给 UIViewController 只有一种协议(protocol)有效

在应用程序中,我有我的UIViewController遵守的自定义协议(protocol)。我有一个自定义的tableViewCell类,里面有UIImageView和UITextView。出列后,我将单元格的委托(delegate)设置为UIViewController。但是,只有一个自定义协议(protocol)会进行回调(图像选择器协议(protocol))。protocolcustomProtocol1{funcpickImage(myInt:Int)}protocolcustomProtocol2{funcprotocol2(myInt:Int)}classcontrolle

xcode - ** 'FlickrPhotosViewController' 与协议(protocol) 'UICollectionViewDataSource' 的冗余一致性 **

这个问题在这里已经有了答案:RedundantconformanceerrormessageSwift2(3个答案)关闭6年前。我正在学习这个(http://www.raywenderlich.com/78550/beginning-ios-collection-views-swift-part-1)教程,现在我是出现这个错误:“FlickrPhotosViewController”与协议(protocol)“UICollectionViewDataSource”的冗余一致性所以我这里有这段代码:extensionFlickrPhotosViewController:UICollect

swift - 如何在 swift 中使协议(protocol)方法可选?

如何在swift中使协议(protocol)方法成为可选的?现在似乎需要协议(protocol)中的所有方法。还有其他解决方法吗? 最佳答案 虽然您可以在Swift2中使用@objc,但您可以添加一个默认实现,而不必自己提供该方法:protocolCreatable{funccreate()}extensionCreatable{//bydefaultamethodthatdoesnothingfunccreate(){}}structCreator:Creatable{}//yougetthemethodbydefaultCrea

swift - 使用协议(protocol)扩展的默认关联类型

我有一个带有associatedType的协议(protocol)。我想在协议(protocol)扩展中为该类型提供默认的typealias。这仅适用于从特定类继承的类。protocolFoo:class{associatedtypeBarfuncfooFunction(bar:Bar)}协议(protocol)扩展:extensionFoowhereSelf:SomeClass{typealiasBar=IntfuncfooFunction(bar:Int){//Implementation}}编译器提示“Bar”在此上下文中对于类型查找不明确。我也无法在swiftbook中找到任何

ios - SwiftUI 列表数据的可识别协议(protocol)扩展

我正在试验SwiftUI,在为我的一个列表实现数据模型时遇到了一个问题。我的计划是创建一个协议(protocol)CardProtocol作为我列表元素的数据协议(protocol),然后有一个CoreData协议(protocol)实现以及一个用于单元测试和Canvas使用的虚拟协议(protocol)。如果您在SwiftUIList中使用数据集合,则单个元素需要符合Identifiable协议(protocol)。代码如下所示:importSwiftUIimportCombinefinalclassCardsModel:BindableObject{varcards:[CardPr

swift - 协议(protocol)间接实现另一个协议(protocol)不止一次

我正在做一些测试项目来学习Swift,但有一个编译问题我无法解决。我定义了这样一个协议(protocol):@objcprotocolMyDataProvider:UICollectionViewDataSource,UICollectionViewDelegate,NSObjectProtocol{varmyData:AnyObject{get}}和一个实现它的类:classMyData:NSObject,MyDataProvider{varmyData:AnyObjectinit(){self.myData=Int()}funccollectionView(collectionVi