将类或基元类型传递给函数时,函数中对参数所做的任何更改都将反映在类之外.这与inout
参数应该做的基本相同.
inout参数的一个好用例是什么?
最近我看到了Apple的2015年WWDC主题演讲.我也查看了一些文档,但是我找不到"if if pattern"部分,它是如何写在他们展示的幻灯片上的.(来自Apple Events的 68分00秒视频)
你知道这是指什么吗?还是语法?
我认为Swift是一种构造得很好的现代语言,然而,有一件事让我感到困惑,那就是有(nil <= 0)== true和(nil <0)== true的理由.
以下是更多案例:
无论如何,返回true为nil <0似乎违背了整个可选概念,其中一个参数是关于避免默认数字初始化为"0".现在"0"再次特别.
任何人都有任何解释,Swift决定让(nil <= 0)和(nil <0)返回true.
是否可以使用Xcode 6.3但仍然使用Swift 1.0?
使用iOS 8.2 SDK没有帮助,我找不到Swift版本的任何开关......
编辑:我有一个Swift 1.0的扩展版本,我不想触摸,但更新我的主项目
如果我有一个带签名的元组,(String, Bool)
我就无法将其转换为(String, Any)
.编译器说:
错误:无法将元组转换'(String,Bool)'表示为'(String,Any)'
但这应该工作,因为Bool
可以安全地Any
使用as
.如果您执行类似的操作,则会抛出几乎相同的错误:
let any: Any = ("String", true)
any as! (String, Any) // error
any as! (String, Bool) // obviously succeeds
Run Code Online (Sandbox Code Playgroud)
错误:
无法将'(Swift.String,Swift.Bool)'类型的值转换为'(protocol <>,protocol <>)'
那么有没有针对第二种情况的解决方法呢?因为你甚至无法投射Any
到任何(Any, Any)
可以单独投射元素的元组.
我正在尝试学习如何使用swift 2.0创建FFT但是我无法编译.map函数.
以下代码在游乐场中工作,但不在xCode内部作为swift类的成员.
我收到以下错误"实例成员'sineArraySize'不能用于'FFTAnalyser'类型
import Foundation
import Accelerate
class FFTAnalyser {
let sineArraySize = 64 // Should be power of two for the FFT
let frequency1 = 4.0
let phase1 = 0.0
let amplitude1 = 2.0
var sineWave = (0..<sineArraySize).map {
amplitude1 * sin(2.0 * M_PI / Double(sineArraySize) * Double($0) * frequency1 + phase1)
}
func plotArray<T>(arrayToPlot:Array<T>) {
for x in arrayToPlot {
print(x)
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.谢谢
我有一个"屏幕外"的UIView层次结构,我希望在屏幕的不同位置进行渲染.此外,应该可以仅显示此视图层次结构的一部分,并且应该反映对此层次结构所做的所有更改.
困难:
UIView
方法drawHierarchy(in:afterScreenUpdates:)
始终调用draw(_ rect:)
,因此对于大型层次结构而言效率非常低.您必须在每次屏幕更新时重绘它或观察所有视图的所有更改属性.绘制视图层次结构文档UIView
方法snapshotView(afterScreenUpdates:)
也没有多大帮助,因为如果此层次结构是"屏幕外",我还没有找到获得正确视图层次结构图的方法.快照视图文档"屏幕外":此视图层次结构的根视图不是应用程序UI的一部分.它没有超级视图.
您可以在下面看到我的想法的直观表示:
我试图在我的iPhone上运行我的应用进行测试,但收到此错误:
错误:无法启动'/ private / var / containers / Bundle / Application / 一些数字 / 应用程序名称 .app'-iPhone 名称已拒绝启动请求。
我找到了解决此问题的方法,但我尝试了以下方法却没有起作用:
在iPhone上运行该应用程序的唯一方法是禁用方案中的“调试可执行文件”,但这不是最好的解决方案,因为我无法使用调试器,也许有更好的解决方案来解决这个问题?
我可以使用Xcode 7在Swift 1(适用于iOS 7和8)中编写应用程序吗?或者将编译Swift 2在iOS 7-9上运行?
我有一个函数assignName(name :),它会抛出一个错误.当从具有多个catch的do块调用该函数时,它将错误显示为:
Errors thrown from here are not handled because the enclosing catch is not exhaustive
Run Code Online (Sandbox Code Playgroud)
我的代码是:
enum PersonError: ErrorType {
case IsNotAPerson
case IsNotAGoodPerson
case IsNotAValidPerson
}
func assignName(name: String?) throws {
guard name != nil else {
throw PersonError.IsNotAPerson
}
personName = name
}
func catchingSpecificError() {
do {
try assignName(nil) // Compiler Error displays at this line.
}catch PersonError.IsNotAPerson {
print("Propagated error is caught in catch on case .NotAPerson")
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
swift ×8
swift2 ×6
ios ×4
xcode ×4
casting ×1
dictionary ×1
fft ×1
if-statement ×1
null ×1
off-screen ×1
rendering ×1
syntax ×1
tuples ×1
uiview ×1
xcode6.3 ×1