假设我想用空格分割字符串.此代码段在Swift 1.x中正常工作.它在Xcode 7 Beta 1中的Swift 2中不起作用.
var str = "Hello Bob"
var foo = split(str) {$0 == " "}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误:
Cannot invoke 'split' with an argument list of type '(String, (_) -> _)
Run Code Online (Sandbox Code Playgroud)
有人知道怎么称呼这个吗?
更新:添加了一条说明,这是针对Xcode 7 beta 1的.
我想使用Accelerate框架扩展[Float]和[Double],但每个都需要不同的实现.
我试过了明显的事:
extension Array<Float> {
}
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
"必须在非特定的泛型类型'Array'上声明约束扩展,并使用'where'子句指定的约束"
以这种方式扩展Swift 2中的泛型类型是否可行?
我现在已经按预期运行了代码.这是一个使用Accelerate框架显示总和的示例.
extension _ArrayType where Generator.Element == Float {
func quickSum() -> Float {
var result: Float = 0
if var x = self as? [Float] {
vDSP_sve(&x, 1, &result, vDSP_Length(x.count))
}
return result
}
}
extension _ArrayType where Generator.Element == Double {
func quickSum() -> Double {
var result: Double = 0
if var x = self as? [Double] {
vDSP_sveD(&x, 1, &result, vDSP_Length(x.count))
}
return result
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用presentViewController来呈现新的屏幕
let dashboardWorkout = DashboardWorkoutViewController()
presentViewController(dashboardWorkout, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
这从底部到顶部呈现新屏幕,但我希望它从右到左呈现而不使用UINavigationController.
我使用Xib而不是故事板,所以我该怎么做?
将类或基元类型传递给函数时,函数中对参数所做的任何更改都将反映在类之外.这与inout参数应该做的基本相同.
inout参数的一个好用例是什么?
我在Swift 1.2中使用它
let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)
现在这给了我一个警告,要求我使用
stringByAddingPercentEncodingWithAllowedCharacters
Run Code Online (Sandbox Code Playgroud)
我需要使用NSCharacterSet作为参数,但是有很多,我无法确定哪个会给我与之前使用的方法相同的结果.
我想要使用的示例URL将是这样的
http://www.mapquestapi.com/geocoding/v1/batch?key=YOUR_KEY_HERE&callback=renderBatch&location=Pottsville,PA&location=Red Lion&location=19036&location=1090 N Charlotte St, Lancaster, PA
Run Code Online (Sandbox Code Playgroud)
用于编码的URL字符集似乎包含修剪我的URL的设置.即
URL的路径组件是紧跟主机组件(如果存在)的组件.它在查询或片段组件开始的任何地方结束.例如,在URL http://www.example.com/index.php?key1=value1中,路径组件是/index.php.
但是我不想削减它的任何方面.当我使用我的String时,例如myurlstring它会失败.
但是当使用以下内容时,则没有问题.它用一些魔法编码了字符串,我可以得到我的URL数据.
let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)
就这样
使用给定的编码返回String的表示形式,以确定将String转换为合法URL字符串所需的转义百分比
谢谢
如果可能的话,我想从字典中删除一个键值对.
var dict: Dictionary<String,String> = [:]
var willRemoveKey = "SomeKey"
dict.removePair(willRemoveKey) //that's what I need
Run Code Online (Sandbox Code Playgroud) 我正在使用一个使用文本字段并将其转换为整数的应用程序.以前是我的代码
textField.text.toInt()
Run Code Online (Sandbox Code Playgroud)
工作.现在Swift将此声明为错误,并告诉我这样做
textField.text!.toInt()
Run Code Online (Sandbox Code Playgroud)
它说没有toInt()并尝试使用Int().这也行不通.刚刚发生了什么?
在Swift 2.0中NSError符合ErrorType协议.
对于自定义错误,我们可以为某些情况指定关联对象,如下所示.
enum LifeError: ErrorType {
case BeBorn
case LostJob(job: String)
case GetCaughtByWife(wife: String)
...
}
Run Code Online (Sandbox Code Playgroud)
我们可以轻松地做到以下几点:
do {
try haveAffairWith(otherPerson)
} catch LifeError.GetCaughtByWife(let wife) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我们希望它作为一个传递到其他地方NSError,它就会丢失它的关联对象信息.
println("\(LifeError.GetCaughtByWife("Name") as NSError)")
Run Code Online (Sandbox Code Playgroud)
打印:
Error Domain=... Code=1 "The operation couldn't be completed". (... error 1)
Run Code Online (Sandbox Code Playgroud)
它userInfo是nil.
我wife和哪里有联系ErrorType?
我使用/sf/answers/2027484161/上的答案将NSIndexSet转换为[Int]数组我需要完全相反,将相同类型的数组转换回NSIndexSet.
我已经找到了一些关于这个问题的问题,但是他们都没有帮我解决问题.我正在尝试使用此代码将对象保存到核心数据(在Xcode 6和Simulator中工作得很好......):
let fetchRequest = NSFetchRequest(entityName: "Patient")
let fetchedResults : [NSManagedObject]!
do {
fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]
patienten = fetchedResults
} catch {
print("error")
}
Run Code Online (Sandbox Code Playgroud)
一旦我开始在Xcode 7 beta和物理设备上开始这个项目,我就添加了do-try-catch.现在,当我点击Save按钮时,这段代码被调用,应用程序冻结,我得到以下内容:
警告:无法从dyld共享缓存加载任何Objective-C类信息.这将显着降低可用类型信息的质量.
有谁知道我哪里出错了?