比方说,我有三个可选的字符串,string1,string2,和string3。我不知道哪一个不是(如果有的话),nil所以我正在使用if-let语句,然后我想对那个非null的字符串做一些事情,而不管它是哪个。
现在,这可以在Swift中使用,但是很麻烦:
if let newString = string1 {
doSomething()
} else if let newString = string2 {
doSomething()
} else if let newString = string3 {
doSomething()
}
Run Code Online (Sandbox Code Playgroud)
我可以做类似的事情(这给我一个错误):
if let newString = string1 || let newString = string2 || let newString = string3 {
doSomething()
}
Run Code Online (Sandbox Code Playgroud) 我在操场上运行一些代码。
var optional: Int?
guard let unwrapped = optional else {
print("optional is nil")
return
}
print("Optional is not nil”)
Run Code Online (Sandbox Code Playgroud)
使用此当前代码,我收到一条错误消息,指出“在 func 之外返回无效”。如果我更换return用break,我得到一个错误,指出break只允许一个循环或交换机的内部。如果我在 print 语句之后没有任何其他语句,我会收到一条错误消息,指出“保护主体不能落空,请考虑使用 return 或 throw 退出范围”。
我正在尝试在我的应用中使用 Google AdMob。但是,该应用程序在启动时不断崩溃。我相信我已经初始化的AdMob正确的,因为我添加了必需的GADApplicationIdentifier密钥和值到我的Info.plist文件,我也有GADMobileAds.sharedInstance().start(completionHandler: nil)在AppDelegate.swift。
这是我的错误日志:
2019-10-02 00:23:18.731486-0400 App Name[15066:162231] [Crashlytics] Version 3.14.0 (144)
2019-10-02 00:23:18.741556-0400 App Name[15066:162311] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2019-10-02 00:23:18.742118-0400 App Name[15066:162335] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." …Run Code Online (Sandbox Code Playgroud) 我已经看到了类似问题的其他一些答案,但即使进行了一些调整,这些解决方案都对我不起作用。
正如标题所示,我希望我的UICollectionViewCells 有圆角和阴影(或除了顶部之外的所有侧面都有阴影)。到目前为止,我所做的是将两个视图添加到我的UICollectionViewCell-中mainView,它显示单元格的必要内容并具有圆角,并且shadowView,它具有阴影。两个视图都不是另一个视图的子视图,它们一起存在于同一个单元格中。它们的尺寸完全相同,并且mainView明显显示在 的顶部shadowView。这是我当前的代码实现:
let mainView = cell.viewWithTag(1003) as! UIView
mainView.layer.cornerRadius = 10.0
mainView.layer.borderWidth = 1.0
mainView.layer.borderColor = UIColor.clear.cgColor
mainView.layer.masksToBounds = true
let shadowView = cell.viewWithTag(1002) as! UIView
shadowView.layer.shadowColor = UIColor.black.cgColor
shadowView.layer.shadowOffset = CGSize(width: 0, height: 2.0)
shadowView.layer.shadowRadius = 2.0
shadowView.layer.shadowOpacity = 0.5
shadowView.layer.masksToBounds = false
shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: mainView.layer.cornerRadius).cgPath
Run Code Online (Sandbox Code Playgroud)
以下是这段代码产生的结果:
有人会认为mainView它的角不够圆,阴影不够大。
然而,在删除 的背景shadowView并将其设置UICollectionView为黑色后,您可以看到 的mainView角实际上非常圆滑:

所以这意味着问题在于 的shadowView …