草庐IT

UIApplicationDelegate_Protocol

全部标签

当专门化类型受附加协议(protocol)约束时,Swift 无法专门化泛型参数

想象一下以下场景:classFood{}protocolGrowable{}classAnimal{}letanimal1=Animal()//Okletanimal2=Animal()//Compileerror:'Animal'requiresthat'Food&Growable'inheritfrom'Food'很明显,如果我们有一个Food&Growable类型的变量,那么这个变量也是Food类型的。然而,Animal类的通用参数T不能专门用于Food&Growable类型。这是为什么? 最佳答案 错误信息有点奇怪,但是你试

ios - 类型 'String?' 不符合协议(protocol) '_CollectionType'

vardesc=item.itemDescriptionletregex:NSRegularExpression=NSRegularExpression(pattern:"",options:NSRegularExpressionOptions.CaseInsensitive,error:nil)!letrange=NSMakeRange(0,countElements(desc))lethtmlLessString:String=regex.stringByReplacingMatchesInString(desc,options:NSMatchingOptions.allZeros

objective-c - swift 协议(protocol) : what am i doing wrong?

@objcprotocolAnimal{typealiasElementTypefuncgetSiblings()->[ElementType]funcgetMother()->ElementType?funcgetFather()->ElementType?optionalfuncaddSibling(sibling:ElementType)}它一直给我错误信息:methodcannotbemarked@objcbecauseitsresulttypecannotberepresentedinObjective-C.提前致谢 最佳答案

ios - 对协议(protocol)感到困惑

我有几个继承自SKNode的类。它们都有一个setup()方法。它们彼此非常不同。我制定了这样的协议(protocol):protocolLevelProtocol{funcsetup(level:Int)}我的两个类看起来像这样:classPuzzle:SKNode,LevelProtocol{funcsetup(level:Int){dosomething}classAction:SKNode,LevelProtocol{funcsetup(level:Int){dosomething}在我的主类中,我需要在一个变量中使用这些类之一。如何正确定义此变量?我已经试过了:varlvl:

swift - swift hashable 协议(protocol)哈希函数是否需要返回唯一值?

我正在学习iOSswift俄罗斯方block教程*,并已完成并开始工作。但我对一个特定方面感到困惑-Hashable协议(protocol)。函数:classBlock:Hashable,Printable{[...]varhashValue:Int{returnself.column^self.row}行为0..9,列为0..20。注释说这个函数“我们返回我们的行和列属性的异或,为每个block生成一个唯一的整数。”。但我的理解是0^1将与1^0相同,等等......我想知道如果Hash函数不是这样唯一的,或者碰撞通常是可以的,这是否是一个问题?正如我所说,该应用程序似乎运行良好..

swift - 为什么在协议(protocol)中定义的覆盖方法在父类而不是子类中被调用?

我有一个协议(protocol):publicprotocolJSONMapper{funcmap(fromJSONjson:JSON)->Self}还有一个模型类,我所有的模型对象都继承自:classModel:JSONMapper{funcmap(fromJSONjson:JSON)->Self{returnself}classfuncinstances(fromJSONjson:[JSON])->[AnyObject]{varobjects=[Model]()foriteminjson{objects.append(Model().map(fromJSON:item))}retu

swift - 我的协议(protocol)定义在另一个 Swift 文件中不可见

我有两个文件:DBStartViewController.swift和DBFindViewController.swift当我定义我的协议(protocol)时:protocolDBViewAnimationTransitioning{varviewForAnimation:UIView?{getset}}在DBStartViewController.swift中,它在我的DBFindViewController.swift中不可见。我得到一个错误:UseofundeclaredtypeDBViewAnimationTransitioning.但是当我将声明移动到DBFindViewC

swift - GKAgentDelegate 的协议(protocol)方法在 Swift 中不对吗?

在GameplayKit中,我想遵循协议(protocol)GKAgentDelegate,因此使用委托(delegate)方法funcagentDidUpdate(agent:GKAgent)。问题是,在这个方法中,参数agent被声明为GKAgent,而不是GKAgent2D,所以我无法访问agent.position,因为position属性在GKAgent2D中,而不是GKAgent...但是在Objective-CAPI中,agent被声明为GKAgent2D。请帮忙。 最佳答案 由于GKAgent2D是GKAgent的子

Swift 泛型和协议(protocol)不适用于 UIKit [可能的错误]

TL;DR->滚动到底部在尝试使用Swift面向协议(protocol)的编程中标记Apple时,我在尝试实现类之间的委托(delegate)模式时偶然发现了以下问题。我将从这个例子开始:protocolPhotoHandlerParent{}classUIViewController{}classMyViewController:UIViewController,PhotoHandlerParent{}classPhotoHandler:NSObject,UIImagePickerControllerDelegate,UINavigationControllerDelegate{we

swift - 是否可以在 Typhoon 中注册协议(protocol)以快速与 TyphoonComponentFactory.componentForType 一起使用

TyphoonComponentFactoryProtocol.componentForType(classOrProtocol:AnyObject!)无法接受协议(protocol)据我所知,MyProtocol.self返回一个协议(protocol),而协议(protocol)似乎没有实现AnyObject协议(protocol)(仅Any)。有没有办法在swift中基于协议(protocol)使用Typhoon进行服务定位(而不是直接调用汇编函数),或者这只是目前swift和typhoon的限制? 最佳答案 不幸的是,这个方