jjzjj

Protocols

全部标签

ios - 扩展符合 NSFetchRequestResult 的协议(protocol)

我正在将我的代码迁移到Swift3,但我遇到了一个我不能100%确定的问题。自WWDC2016起,CoreData团队更新了他们的框架,使其对泛型更加友好,新的增强型NSFetchRequest现在返回符合NSFetchRequestResult的对象。所以在下面的代码中,我的基本协议(protocol)符合上述NSFetchRequestResult协议(protocol),并且在其子协议(protocol)ManagedObjectFetchable的扩展中,我想返回获取对象符合类型:importCoreData@objcprotocolManagedObjectType:clas

swift - 您如何反射(reflect) Codable/Codable Keys 协议(protocol)的设计?

我正在尝试实现类似于Swift如何在实现Codable的类中定义的枚举上使用CodableKeys协议(protocol)集的方式。在我的例子中,类是CommandHandler,枚举是CommandIds,它不需要编译器的代码生成,因为枚举总是被显式指定。这是我所追求的简化版本...protocolCommandId{}protocolCommandHandler{associatedtypeCommandIds:CommandId,RawRepresentable}classHandlerA:CommandHandler{enumCommandIds:String,CommandI

swift - 如果在扩展中实现协议(protocol)方法,是否需要在协议(protocol)中指定方法?

这个问题在这里已经有了答案:Reasonstoincludefunctioninprotocoldefinitionvs.onlydefiningitintheextension?(1个回答)Swiftprotocolextensionmethodiscalledinsteadofmethodimplementedinsubclass(4个答案)关闭4年前。我喜欢Swift让您在协议(protocol)中定义方法,然后通过该协议(protocol)的扩展来实现该方法的方式。但是,特别是对于您在相同范围和相同访问级别定义协议(protocol)和扩展的情况,您是否需要首先在协议(prot

swift - swift 中的平等协议(protocol)

我正在尝试制作一个简单的游戏实现。所以每场比赛都有一个正确的答案。Answer可以是Int或String。所以我的代码是:protocolAnswer{}extensionInt:Answer{}extensionString:Answer{}protocolCorrectAnswer{varcorrectAnswer:Answer{get}}我有一个游戏需要的协议(protocol):protocolGameDescriber{varname:String{get}vardescription:String{get}varpoints:Int{get}}以及Game结构体的实现:st

swift - BindableObjects 数组 SwiftUI

所以我正在尝试使用SwiftUI设置CoreData,并且CoreData模型和SwiftUIView都在工作。我需要做的就是连接它们。我能够传递离散数量的BindableObjects但我需要的是传递一个数组。这是设置:letperistence=PersistenceManager()varmodel=[Entry]()//EntryConformstoNSManagedObjectandBindableObjectletrequest=Entry.createFetchRequest()letsort=NSSortDescriptor(key:"callsign",ascendi

swift 。在内部协议(protocol)中声明私有(private)函数

我怎样才能实现这样的目标(不编译):internalprotocolInternalPrivateMix{privatefuncdoPrivately()internalfuncdoInternaly()}基本上我想做出一个promise,确认类私下实现了一些功能。这更适用于self记录。我显然可以在我的类中实现这些功能,而无需正式遵守协议(protocol)并编写描述每个类都应实现此功能的文档。如果我能更正式地向其他开发人员传达我的意图,那就太好了。编辑:我尝试在一个文件中实现两种协议(protocol),一种是私有(private)的,一种是内部的,如@creeperspeak所建

ios - Swift:使用 `var` 会导致编译器警告,使用 `let` 会导致编译器错误?

我已经定义了一个CanStack协议(protocol)和一个名为Item的关联类型:CanStack.swift//protocoldefinitionprotocolCanStack:ExpressibleByArrayLiteral,CustomStringConvertible{associatedtypeItemvaritems:[Item]{get}init()mutatingfuncpush(_items:[Item])mutatingfuncpop()->Item?}//protocolextension(defaultbehavior)extensionCanStac

swift - 如何解决 Swift 不支持一流元类型的问题?

所以我正在实现以下内容:一个简单的LanguageType协议(protocol),符合Hashable一个Translateable协议(protocol),它应该允许您使用LanguageType从字典中获取(和设置)一个[String]作为键//MARK:-LanguageTypeprotocolLanguageType:Hashable{vardescription:String{get}}extensionLanguageType{vardescription:String{return"\(Self.self)"}varhashValue:Int{return"\(Self

swift - 为什么我可以将 @objc 协议(protocol)声明为弱属性,而不是 swift 协议(protocol)?

我发现如果我创建一个这样的协议(protocol):protocolMyProtocol{}我不能这样做:weakvarmyVar:MyProtocol?我找到了解决这个问题的方法,就是将@objc添加到协议(protocol)声明中:@objcprotocolMyProtocol{}但是为什么这样可以修复错误呢?我的猜测是添加@objc会阻止结构符合协议(protocol),因此变量的值被保证为引用类型。我说得对吗?此外,添加@objc会阻止我添加像[String:Any]这样的swift类型。我也想知道是否有另一种修复错误的方法。 最佳答案

属性符合协议(protocol)的 Swift 协议(protocol)扩展

我这样声明了一个协议(protocol)protocolJSONConnection{varrequest:NSURLRequest{getset}varsession:NSURLSession{getset}varjsonRootObject:JSONSerializable?{getset}}这里的JSONSerializable不是实际类型,它是我声明的另一个协议(protocol):protocolJSONSerializable{funcreadFromJSON(json:JSON)throws}所以,事实上,这个JSONConnection协议(protocol)需要一个名