草庐IT

Getter-Setter

全部标签

Swift Dictionary - 在 setter 函数中更新值

我的代码看起来有点像:协议(protocol)protocolMyProtocol:class{varfeatureConfigs:[String:Any]?{getset}}基类classMyBaseClass:MyProtocol{varfeatureConfigs:[String:Any]?{get{returnnil}set{self.featureConfigs=newValue}}}子类classMySubclass:MyBaseClass{overridevarfeatureConfigs:[String:Any]?{get{return["feature-specifi

swift - 我应该在 swift 的 getter 方法中返回什么

varuserState:UserState{get{returnuserState}set{print("\(self.userState)")}}返回userState会导致无限循环。我对getter方法不感兴趣,只想返回getter中属性的值。我宁愿自定义setter方法。 最佳答案 如果您想覆盖一个setter,但要保持您的属性可读,那么您需要创建一个变量来“支持”该属性:privatevarstoredUserState:UserStatevaruserState:UserState{get{returnstoredUse

macos - (NSMenuItem) : missing setter or instance variable

我遇到了一个奇怪的错误:2015-04-0212:20:14.642test[21167:257788]Failedtoconnect(testApp)outletfrom(test.AppDelegate)to(NSMenuItem):missingsetterorinstancevariableinsertedid:122我在将menuItem添加到菜单并将功能连接到它时发生。我不知道问题是什么。该应用程序运行良好,但我认为忽略错误不是一个明智的主意。setter或实例变量是什么意思?为什么需要它?更新:这是相关代码:importCocoaimportFoundation@NSAp

没有getter的Swift实现setter

在Swift中如何实现没有getter的setter?我需要在设置值时调用一个方法:varselectedIndex:Int{set{selectItemAtIndex(newValue)}}但是在Swift中,你必须同时使用getter和setter,而不是只使用一个。 最佳答案 您可以使用属性观察器didSet。这将在设置值后立即调用。varselectedIndex:Int{didSet{selectItemAtIndex(selectedIndex)}} 关于没有getter的S

properties - 在 Swift 中调用子类的 getter

因此,在使用Swift时,我遇到了这个问题,这让我很困惑。我有一张类(class)卡片:classCard{varcontents=""varchosen=falsevarmatched=falsevardescription:String{get{returnself.contents}}funcmatch(otherCards:Card[])->Int{...}}和一个从Card子类化的PlayingCard类:classPlayingCard:Card{varsuit:Suitvarrank:Rankoverridevarcontents:String{get{return"\(

swift - 在 getter 中返回非可选值,而在 setter 中允许可选值

classMyClass{privatevar_image:UIImagevarimage:UIImage{set{ifnewValue==nil{_image=UIImage(named:"some_image")!}}get{return_image}}}我的目标是在访问image时保证非可选值我可以在没有附加功能的情况下实现吗?即使我使用didSet/willSet它们仍然绑定(bind)到UIImage类型,我无法检查nil... 最佳答案 听起来你想使用一个隐式解包的可选。由于您的getter只是一个非可选UIImage的

swift - 具有 getter/setter 的变量在重写的存储属性上不能具有初始值

使用观察访问器创建存储属性时,我可以指定一个默认值。但是,在覆盖存储属性及其访问器时,我无法指定默认值。Variablewithgetter/settercannothaveinitialvalue.这看起来很奇怪,因为这不是带有getter/setter的计算属性,而是存储属性上的一组观察访问器!classFirstViewController:UIViewController{internalvartest:Float=32.0{willSet{}didSet{}}第一个ViewController编译正常,存储属性初始化为32.0classSecondViewController

swift - 如何将计算属性的 'setter' 设置为私有(private)?

我知道如何将存储属性的“setter”设置为私有(private)(例如publicprivate(set)varname:String="John")但是我们如何设置一个存储属性的“setter”计算属性(property)私有(private)?在本例中,变量“age”的“setter”。当我尝试将关键字private放在set(newAge){}前面时,XCode显示错误。那么是否可以将计算属性的“setter”设置为私有(private)?publicclassPerson{publicprivate(set)varname:String="John"varage:Int{ge

Swift:为什么带有 setter 的变量也必须有 getter?

快速提问:为什么?上下文:我正在使用Swinject依赖注入(inject)将small-s单例模型类添加到我的View中:defaultContainer.registerForStoryboard(MyViewController.self){responder,viewControllerinviewController.proxy=responder.resolve(MyProxy.self)!}我想通过使用计算属性来防止意外覆盖这个单例实例的风险:privatevar_proxy:MyProxy!varproxy:MyProxy{set{if_proxy==nil{_prox

swift - 惰性变量 : Cannot use mutating getter on immutable value

在dateFormatter.string(from:date)这行,编译器说:Cannotusemutatinggetteronimmutablevalue:'self'isimmutableMarkmethod'mutating'tomake'self'mutablestructviewModel{privatelazyvardateFormatter={()->DateFormatterinletformatter=DateFormatter()formatter.dateFormat="MM/dd/yyyy"returnformatter}()varlabelText:Stri