目前,我正在跟踪与Swift的好书应用程序开发,到目前为止,一切都解释得很棒。然而,在练习之后,我发现了一些我想更好理解的代码。我已经试着到处查找信息,但我甚至不知道名字是什么,也不知道如何找到它。所以没有什么要说的了,下面是:
我有本字典:
var frequencyOfAnswers: [AnimalType: Int] = [:]
AnymalType是一个简单的enum,有四种情况。然后在frequencyOfAnswers上执行映射
let responseTypes = responses.map { $0.type }
到目前为止,一切都很好。但是在下面的迭代中:
for res
我正在从学习Ruby过渡到Swift,并试图建立任何有用的关联,以便更好地理解这两种编程语言中类似的概念。我注意到,在Swift中有一些选项,它们有或没有分配给变量的值。
var optinalString: String? = "This is optional"
在Ruby中,我们有一个||=,据我所知,它做了一些非常类似的事情,如果用户不给这个变量赋值,那么它将使用已经设置的预定义变量。
optionalString ||= "This is optional"
我的假设正确吗?总的来说,是什么使这些概念相似/不同?
这是一个相当具体的情况,所以我将尝试解释尽可能多的细节。
我正在做一个应用程序,它应该获取一个预订列表,它可以添加新的,或点击现有的预订,并有一个关于预订的“详细”视图,其中预订详细信息是可编辑的,然后有一个选项来保存它。
REST已经在C#中完成了,并且没有文档说明什么可以是空的,什么不可以是空的(在Swift的情况下是零)。所以我的结论是:
struct Reservation: Codable {
var objectID: String?
var objectName: String?
var objectPrefix: String?
var reservationNumbe
在Swift中,?操作符将Types作为参数,而不是值:
var z = 42? // won't create an Optional<Int> and won't compile
var z : Int? = 42 // ? takes Int and give a Optional<Int>
如何创建自己的函数,或操作Type而不是值的运算符?
Swift允许声明变量,但不允许初始化。如何检查一个变量是否未在Swift中初始化?
class myClass {}
var classVariable: myClass // a variable of class type - not initialized and no errors!
//if classVariable == nil {} // doesn't work - so, how can I check it?
我使用Swift 5测试所有的NSLayoutContraints of someView,如果它们与某些otherView有关
@IBOutlet var someView: UIView!
@IBOutlet var otherView: UIView!
for constraint in someView.constraints {
if (constraint.firstItem == otherView) {
...
}
}
如果出现以下错误,此代码将失败:
二进制运算符'==‘不能应用于'AnyObject?’类型的操作数。还有“
据我所知,Swift是由Objective提供给开发人员在其应用程序中使用的升级版。随之而来的一个新概念是“可选变量”的概念,或者任何可能不包含任何变量的概念。
在目标C中,这几乎是隐含的。您可以将nil的值赋给许多类型的变量,但是,在Swift中,变量必须是可选的。
例如,在Objective中,这类语句是完全of :
SKNode *someNode = [SKNode new];
// some methods appear that may change the value of "someNode."
// they are right here. These
在Swift中处理可选参数的习惯用法似乎过于冗长,如果你想做的就是在默认值为nil的情况下提供一个默认值:
if let value = optionalValue {
// do something with 'value'
} else {
// do the same thing with your default value
}
这涉及到不必要的代码复制,或者
var unwrappedValue
if let value = optionalValue {
unwrappedValue = value
} else {
unwrappe
我需要使用NSGlyph作为Swift字典中的密钥
var glyph:NSGlyph //set to a glyph
var glyphDict:[NSGlyph:CGPath] //Will contain a cache of glyphs previously converted to paths
var path = glyphDict[glyph]
但我明白:
错误:“NSGlyph:CGPath?”没有一个名为“下标”的成员
那么我想苹果还没有为NSGlyph下标吧?
我从苹果的VectorTextLayer示例代码中找到了这段代码,它成功地将CGGlyph用作CFDi
我想简化经常需要做的事情
if let firstName = firstName {
self.name = firstName
}
这样做的一个可能的自定义泛型运算符是
infix operator ?= {}
func ?= <T>(inout left: T, right: T?) {
if let right = right {
left = right
}
}
若要将前面的示例简化为
self.name ?= firstName
这就产生了一个问题,如果firstName的值为零,那么Swift将将该值包装为一个可选的值。
va
在SWIFT2.2中,我经常使用类似于let x = UIView?()的简洁语法声明变量。这给了x UIView?类型,并使用nil初始化了它。(当然,在这些示例中,您可以使用任何类型而不是UIView )
然而,当我在SWIFT3.0中做同样的事情时,我会得到一个错误:Cannot invoke initializer for type 'UIView?' with no arguments。它还说Overloads for 'UIView?' exist with these partially matching parameter lists: (Wra
我正在尝试构建一个从API端点接收JSON对象的应用程序,然后我希望在视图中列出该对象。我看了很多关于这个主题的视频,但在每个视频中,他们都使用非常简单的JSON对象作为示例,因此他们编写的代码似乎并没有真正转移过来,无论我如何尝试格式化它,都会给我带来错误。代码如下 import SwiftUI
import Combine
import Foundation
public struct ActivityModel: Codable, Identifiable {
public let id: Int
public let name: String
public
我终于尝试将我的目标之一-C应用程序转换为Swift 3.1。我还学习了一个关于Swift的教程来帮助我。但是,在试图将“for in”循环转换为在Obj-C中成功工作的Swift时,我遇到了以下错误。我已经在下面张贴了Swift和Objective代码,并在Swift中评论了我得到错误的行。我得到了for managedObject: NSManagedObject in myResults{的错误
误差状态
‘'Any’不可转换为'MSManageObject‘
任何帮助我向正确的方向是非常感谢的。
//IN SWIFT 3.1
let co
我已经成功地将Google登录集成到了我的iOS应用程序中的AppDelegate.swift文件中,并且可以成功地检测到一个成功的登录(通过在控制台上打印“成功”)。问题是,在成功登录之后,当我想进入应用程序的下一个屏幕时,我回到了谷歌的登录页面。
AppDelegate.swift文件没有识别performSegue函数,因为它是UIViewController类的函数(如果我错了,请纠正我)。为了解决这一问题,我在ViewController文件中创建了一个全局变量,以便每当更改该值时将执行segue:
AppDelegate.swift:
var userSignedInGlobal