草庐IT

getter-setter

全部标签

ios - Swift 中缺少属性 setter 和 getter

我正在尝试转换thisObjective-C类到Swift。以下是我到目前为止所做的。importUIKitpublicclassCustomColoredAccessory:UIControl{varaccessoryColor=UIColor()varhighlightedColor=UIColor()requiredpublicinit(coderaDecoder:NSCoder!){super.init(coder:aDecoder)}overrideinit(frame:CGRect){super.init(frame:frame)backgroundColor=UIColo

ios - 元组属性的自定义 setter (Swift)

我的类中有一个计算属性,它是一个可选的元组:varcontents:(Int,Bool)?我想编写自定义setter,但不知道如何单独引用元组组件。有谁知道?我尝试了以下但它不起作用:varcontents:(IntcolorNumber,Boolselected)?{//getter&setterhere...} 最佳答案 使用let分解元组variVal:Int?varbVal:Bool?varcontents:(Int,Bool)?{get{ifiVal!=nil&&bVal!=nil{return(iVal!,bVal!)}

swift - 有没有办法只弃用变量的 setter ?

我目前在类openvardeviceIdentifier:String?中有一个变量,我想弃用setter只将它变成openprivate(set)vardeviceIdentifier:String?有什么办法吗?我尝试将这两行都放入,但这显然是Xcode不喜欢的冲突。@available(*,deprecated)openvardeviceIdentifier:String?openprivate(set)vardeviceIdentifier:String?如果我将它更改为计算变量,编译器会很高兴,但我想避免这种情况。这是唯一的方法吗,它会按预期工作吗?privatevar_de

swift - a 如何在结构中使用 setter 的值进行操作?

我有这段带有getter和setter的swift结构代码。newValue的值是如何进入这个setter的?我不知道它是如何定义的。structProgram{varallResults:[String]=[]varitems:Int{get{returnallResults.count}set{letresult=String(newValue*100)//what'sthatnewValue,howdiditgetthere?allResults.append(result)}} 最佳答案 它被称为ShorthandSette

ios - 你如何使用 perform(#selector(setter :)) to set the value of a property using swift 4?

我正在尝试运行这段代码,但它产生了意想不到的结果。classTest:NSObject{@objcvarproperty:Int=0}vart=Test()t.perform(#selector(setter:Test.property),with:100)print(t.property)正在打印的值是一些垃圾号码-5764607523034233277。如何使用perform方法设置属性的值? 最佳答案 performSelector:withObject:方法需要一个对象参数,因此Swift将基本类型100转换为对象引用。se

swift - 警告 : Attempting to access 'myProperty' within its own getter vs SwiftFormat

我有这样的代码:@IBInspectablevarmyProperty:String?{set(newValue){//logicforsetter}get{returnmyProperty}}上面的代码产生了一个警告:Attemptingtoaccess'myProperty'withinitsowngetter.Access'self'explicitlytosilencethiswarning.所以我按照建议修改代码:@IBInspectablevarmyProperty:String?{set(newValue){//logicforsetter}get{returnself.

ios - 无法注入(inject)属性,找不到 setter 选择器

使用Typhoon和Swift,我正在设置我的项目,但我遇到了这个问题。我有一个TPLAddInteractor这样的类classTPLAddInteractor:NSObject,TPLAddInteractorInput{varoutput:TPLAddInteractorOutput?vardataManager:TPLDataManagerInterface?}我的程序集是这样的classTPLAddAssembly:TyphoonAssembly{varapplicationAssembly:TPLApplicationAssembly?dynamicfuncaddInter

caching - Swift getter 代码重复

我正在尝试在swift中使用变量,这些变量是关键的应用程序范围的用户设置,因此它们必须在每次更改后保存到磁盘。这些变量很少,我对应用程序启动后从磁盘进行的第一次读取感到满意。我有类似这样的代码:var_myEnumMember:MyEnum?varmyEnumMember:MyEnum{get{ifletvalue=_myEnumMember{//inmemoryreturnvalue}varc:Cache=Cache()varstoredValue:MyEnum?=c.get("SomeStorageKey");ifletvalue=storedValue{//existsondis

swift - "Use of unresolved identifier"对隐式 setter 上的选择器使用新的 Swift 2.2 语法

将我的代码迁移到Swift2.2,我有一个属性varactiveTextField:UITextfield?并且我使用的选择器是"setActiveTextField:"。此方法在我的swift代码中不明确存在。使用新语法,#selector(setActiveTextField)不起作用:Useofunresolvedidentifier我知道我可以使用Selector("setActiveTextField:")但我会失去新的快速选择器的好处。那么,这样做的新方法是什么? 最佳答案 这里的问题是您使用的是属性,而不是方法。这有两

ios - Swift:当我们对 Int 进行扩展时,属性 getter 中的 "self"应该是什么?

这似乎是一个错误并在Xcode7中用Swift(2b3)解决了为了方便观察,我们把代码贴到playground上,结果会在评论中指出。extensionInt{varsq:Int{mutatingget{self//5self=self*self//25returnself//25Here25ismade}}}varn:Int=5//5n.sq//25n//5Whyisn't25?我的问题是,如果属性sq的getter中的self指的是整数本身,为什么n在之后保留5>n.sq做了?让我们看看如果我们只添加一个setter会发生什么:extensionInt{varsq:Int{muta