草庐IT

swift - Swift 3 中 var 的默认值

在我的结构中,我将vars声明为:publicvarname:String?publicvarX:String?publicvarY:String?现在我的问题是,如果有人访问结构的.name,如果没有设置,我需要返回X+Y,前提是X和Y都已设置,否则我需要返回“dummy”。我如何实现这一点? 最佳答案 它应该工作structStruct{privatevar_name:String?varname:String?{get{ifletname=_name{returnname}elseifletx=X,lety=Y{returnx

ios - 在 Swift 中覆盖一个 var

我试图通过学习不同的教程来学习Swift,但我遇到了一个问题。我有以下代码:ClassVehicle{varseats=5varmaxSpeed=100}classBike:Vehicle{overridevarseats=3}但我不断收到有关尝试覆盖varseats的错误,指出无法使用存储的属性“seats”覆盖。我做错了什么?我以为我可以覆盖继承的变量? 最佳答案 您实际上不需要覆盖该属性,只需使用不同的值进行初始化即可,这可以在初始化程序中完成:classVehicle{varseats=5varmaxSpeed=100}cl

objective-c - let/var 是如何解决可变性的?

这个问题在这里已经有了答案:Immutable/MutableCollectionsinSwift(7个答案)关闭5年前。我没有任何问题,我只是想澄清一下有关可变性的问题。在Objective-C中,我们会使用例如NSMutableArray来获取可变数组,并使用NSArray来获取不可变数组。我不太了解这两者的内部工作原理,但据我所知,我认为不同之处在于NSArray只保留一定数量的内存,这使得它更适合初始值高效,而NSMutableArray不知道它需要多少内存。大概这意味着NSMutableArray有指向内存位的指针,这些内存位遍布整个地方,而不是像NSArray那样一个接一个

swift - lazy var 定义后的括号是做什么用的?

我正在分析一些第三方代码,有一个看起来像这样的“惰性”var语句,我想了解“计算属性”花括号后的括号在做什么:lazyvardefaults:NSUserDefaults={return.standardUserDefaults()}()“return.standardUserDefaults()”返回的是NSUserDefaults实例对象,为什么要在右花括号后面加一个()呢?谢谢 最佳答案 这意味着它是第一次访问defaults时执行的block。如果没有(),则意味着默认值是()->NSUserDefaults类型的block

swift - Swift 类中的私有(private) Var

我希望在Swift的类中声明一个私有(private)变量并使用公共(public)(实际上是内部)方法访问它。以下代码是否正确?classsomeClass{//Usingunderscoreheretodistinguishvariableandmethodprivatevar_privateArray:[String]...funcprivateArray(){return_privateArray}funcsetPrivateArray(someArray:[String]){_privateArray=someArray}}我想使用上面的原因是因为我想在任何子类中使用数组,但

ios - 在 swift 中获取值(value)的首选方式是什么,var 还是 func?

在swift中获取值的首选方法是什么?使用只读变量vargetString:String?{return"Value"}还是使用函数?funcgetString()->String?{return"Value"}另外,两者在性能上有区别吗? 最佳答案 首先,这些都不是合适的名称。它们不应以get开头。(get前缀在Cocoa中有历史意义,但您并不是这个意思,所以即使您的意思是“上网并检索此信息”,您也想使用类似fetch,但肯定不是你给出的情况。)这些问题在SwiftAPIDesignGuidelines的各个部分中得到解决。.首先

swift - lazy var 和 let 的区别

下面的代码可以工作,但是当我将lazyvar更改为let时,它就不能工作了。不知道为什么lazyvarcollectionView:UICollectionView={letlayout=UICollectionViewLayout()letcv=UICollectionView(frame:.zero,collectionViewLayout:layout)cv.translatesAutoresizingMaskIntoConstraints=falsecv.backgroundColor=.redcv.dataSource=selfcv.delegate=selfreturncv

dynamic - swift : Parse subclass dynamic var dont get included when retrieving object

从ParseDataBrowser检索对象时,我无法获取对象属性。这是在我从“@NSManagedvarfriends”更改为“dynamicvarfriends”之后发生的。甚至“名称”在User.logInWithUsernameInBackgroundblock中也显示为nil,这很疯狂,因为登录成功了。用户的ACL设置为“公共(public)读取”。用户对象:classUser:PFUser,PFSubclassing{dynamicvarfriends:[User]!dynamicvarname:String!overrideclassfuncload(){self.regi

swift - 哪个更有效 : Creating a "var" and re-using it, 或创建多个 "let"s?

只是好奇哪个在swift中更高效/更好:创建三个临时常量(使用let)并使用这些常量定义其他变量创建一个临时变量(使用var)并使用该变量保存三个不同的值,这些值随后将用于定义其他变量也许通过一个例子可以更好地解释这一点:varone=Object()vartwo=Object()varthree=Object()funcfirstFunction(){lettempVar1=//calculation1one=tempVar1lettempVar2=//calculation2two=tempVar2lettempVar3=//calculation3three=tempVar3}f

Swift Firebase 将用户名字符串存储到 var

我是firebase的新手,我已成功登录用户并确定他或她在给定时间是否在线。我正在创建一个聊天,我希望它说的是由“bob”而不是长字符串发送的。我已经存储了昵称我只是不知道如何得到它。我是这样存储的firebase.childByAppendingPath("users").childByAppendingPath(fUID).setValue(["isOnline":true,"name":username])我要存入varnickname=""字符串形式的“名称”值谢谢 最佳答案 您需要为该引用设置一个观察者。试试这个。letr