草庐IT

ios - 为什么 swift 协议(protocol)使用 func 重载而不是在具有不同名称的 func 上?

刚开始学swift,注意到协议(protocol)UICollectionViewDelegate(https://developer.apple.com/documentation/uikit/uicollectionviewdelegate)有大约20个同名但参数不同的函数。在C#中,我们也使用重载,但我们使用它们以防我们想要做类似的事情,例如:获取用户(intid)GetUser(字符串用户名)但在swift中,我们对做完全不同事情的函数使用相同的函数名称,例如:funccollectionView(UICollectionView,didSelectItemAt:IndexPa

ios - MVVM 中的分析

我在我的项目中使用MVVM,而且我在整个MVVM之外有分析服务,但我不知道在哪里调用分析服务,是在ViewModels中还是在ViewCotrollers中?例子:查看模型login.request{resultin//Here??Firebase.registerUser()viewController.finishLoginDelegate()}查看ControllerfuncfinishedLoginDelegate(){//OrHere??Firebase.registerUser()} 最佳答案 这是一个非常有趣的问题。我

ios - "override func scrollViewDidScroll"多次调用。我只想打电话一次

我做分页。overridefuncscrollViewDidScroll方法在我滚动时调用了多次。所以loadMore方法也被调用了很多次。我只想在滚动时调用一次loadMore()方法。我该如何解决?overridefuncscrollViewDidScroll(_scrollView:UIScrollView){ifscrollView.contentOffset.y>=scrollView.contentSize.height/3{loadMore()}}//paginationfuncloadMore(){//ifpostsontheserveraremorethanshown

ios - 自定义单元格中的按钮操作不调用委托(delegate)函数

我在我用作TableView中自定义单元格的View的文件所有者中使用此代码:importUIKitprotocolPostCellViewDelegate:class{funcpostSettingsAction()}classPostCellView:UITableViewCell{weakvardelegate:PostCellViewDelegate?@IBActionfuncpostSettingsClicked(_sender:UIButton){delegate?.postSettingsAction()print("here2")}requiredinit?(coder

Swift:你如何理解这个函数签名:func curry<A, B, C>(f: (A, B) -> C) -> A -> B -> C

我在《Swift函数式编程》一书中看到了这个函数,但是我不明白这个函数签名,这个函数的返回类型是什么意思?funccurry(f:(A,B)->C)->A->B->C{return{xin{yinf(x,y)}}}编辑:这个函数是这样用的吗?funadd(a:Int,b:Int)->Int{returna+b}letcurriedAdd=curry(add)//toadd1and2letresultOf1Plus2=curriedAdd(1)(2) 最佳答案 这是一个接受一个类型参数的函数(A,B)->C(即接受两个参数并返回一个参

ios - swift:键盘观察器不工作

我仍在(快速)学习过程中,所以请原谅我这边的任何可怕疏忽。我确实在这种情况下搜索了每一个可能的问题,并尝试了我能找到的所有不同的建议、想法和语法排列。到目前为止没有运气。下面的代码应该只允许我对键盘状态变化使用react:classViewController:UIViewController{overridefuncviewWillAppear(animated:Bool){NSNotificationCenter.defaultCenter().addObserver(self,selector:"keybShow:",name:UIKeyboardWillShowNotifica

swift - `func<T: Type>` 和 `func<T>(..) where T: Type` 之间的区别?

在限制泛型参数的类型时,为什么Swift中有两种方法可以做到这一点?funcfunc(..)whereT:Type这两者之间有区别还是只是留下的遗留语法? 最佳答案 没有区别,我不知道有什么约定。就我个人而言,更喜欢第一个选项,除非它使该行的其余部分必须换行,在这种情况下我会改用第二个选项。 关于swift-`func`和`func(..)whereT:Type`之间的区别?,我们在StackOverflow上找到一个类似的问题: https://stacko

swift - 我应该如何决定我的函数是应该返回可选的还是隐式解包的可选的?

如果我需要返回一些可以为nil的东西,我应该如何决定我的func应该返回可选的还是隐式解包的可选的?我见过任何一个版本的Swift方法,我很好奇是什么驱使决定返回一个可选的而不是从函数/方法中隐式解包的可选的,因为无论哪种方式,您似乎仍然需要在使用它之前检查非nil.例如,SpriteKit的SKNode大量使用隐式解包(部分版本如下)classSKNode:UIResponder,NSCopying,NSCoding{.../**Theparentofthenode.Ifthisisnilthenodehasnotbeenaddedtoanothergroupandisthusthe

ios - 使用 Swift 将 TextField 中的输入打印到 Xcode 中的标签

我正在开发一个简单的猜谜游戏应用程序,只是为了更熟悉Swift和Xcode。我已经能够在userInput中输入并让它向控制台打印一条消息,但是当我试图让它将我的输入打印到usersGuess(这是一个标签)时,我无法弄清楚。这是我通过Xcode在单View应用程序中的代码:importUIKitclassViewController:UIViewController{@IBOutletweakvarcorrectAnswerLabel:UILabel!@IBOutletweakvarusersGuess:UILabel!overridefuncviewDidLoad(){super.

快速函数 : i can't understand underscore as a parameter name that can compile

如何使用下划线参数functest(currentNamename:String,_:Int){print("aa\(name)abc");//howtouse_parameter?}test(currentName:"aa",3) 最佳答案 在Swift中,函数既有参数标签,也有参数名称。这是为了在使用函数时清楚起见。想想一个普通的C函数,它是这样声明的:stringFunctionName(stringfirstName,stringlastName)看函数声明,很容易看出每个参数是什么。在这种情况下,名字和姓氏。然而,当它在代