标签: swift2

在Swift 2中使用split函数

假设我想用空格分割字符串.此代码段在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的.

swift2

70
推荐指数
3
解决办法
4万
查看次数

使用Swift中的where子句扩展数组类型

我想使用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)

generics swift swift-extensions swift2

70
推荐指数
4
解决办法
3万
查看次数

如何使用Swift在iOS中从右到左呈现视图控制器

我正在使用presentViewController来呈现新的屏幕

let dashboardWorkout = DashboardWorkoutViewController()
presentViewController(dashboardWorkout, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

这从底部到顶部呈现新屏幕,但我希望它从右到左呈现而不使用UINavigationController.

我使用Xib而不是故事板,所以我该怎么做?

ios segue swift swift2

70
推荐指数
6
解决办法
7万
查看次数

何时使用inout参数?

将类或基元类型传递给函数时,函数中对参数所做的任何更改都将反映在类之外.这与inout参数应该做的基本相同.

inout参数的一个好用例是什么?

swift swift2

67
推荐指数
3
解决办法
4万
查看次数

如何在Swift 2.0中使用stringByAddingPercentEncodingWithAllowedCharacters()作为URL

我在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字符串所需的转义百分比

谢谢

string nscharacterset swift swift2

63
推荐指数
3
解决办法
6万
查看次数

如何从swift词典中删除键值对?

如果可能的话,我想从字典中删除一个键值对.

var dict: Dictionary<String,String> = [:]
var willRemoveKey = "SomeKey"
dict.removePair(willRemoveKey) //that's what I need
Run Code Online (Sandbox Code Playgroud)

dictionary swift swift2

63
推荐指数
3
解决办法
4万
查看次数

.toInt()在Swift 2中删除了吗?

我正在使用一个使用文本字段并将其转换为整数的应用程序.以前是我的代码

textField.text.toInt() 
Run Code Online (Sandbox Code Playgroud)

工作.现在Swift将此声明为错误,并告诉我这样做

textField.text!.toInt()
Run Code Online (Sandbox Code Playgroud)

它说没有toInt()并尝试使用Int().这也行不通.刚刚发生了什么?

swift swift2

60
推荐指数
1
解决办法
5万
查看次数

将ErrorType转换为NSError会丢失关联的对象

在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)

userInfonil.

wife和哪里有联系ErrorType

error-handling swift swift2

57
推荐指数
4
解决办法
2万
查看次数

在Swift中从整数数组创建NSIndexSet

我使用/sf/answers/2027484161/上的答案将NSIndexSet转换为[Int]数组我需要完全相反,将相同类型的数组转换回NSIndexSet.

nsarray nsindexset ios swift2

55
推荐指数
4
解决办法
3万
查看次数

Swift 2,警告:无法从dyld共享缓存加载任何Objective-C类信息

我已经找到了一些关于这个问题的问题,但是他们都没有帮我解决问题.我正在尝试使用此代码将对象保存到核心数据(在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类信息.这将显着降低可用类型信息的质量.

截图

有谁知道我哪里出错了?

console xcode core-data xcode7 swift2

54
推荐指数
3
解决办法
4万
查看次数