小编Ant*_*tin的帖子

Swift不会将Objective-C NSError**转换为throws

我有一些Objective-C遗留代码,它声明了类似的方法

- (void)doSomethingWithArgument:(ArgType)argument error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

正如这里所写的https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html

Swift会自动将产生错误的Objective-C方法转换为根据Swift的本机错误处理功能引发错误的方法.

但在我的项目中描述的方法如下所示:

object.doSomething(argument: ArgType, error: NSErrorPointer)
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试使用它们时,它会抛出运行时异常:

let errorPtr = NSErrorPointer()
object.doSomething(argumentValue, error: errorPtr)
Run Code Online (Sandbox Code Playgroud)

我还需要更多东西来将Objective-C"NSError**"方法转换为Swift"trows"方法吗?

objective-c nserror ios swift

22
推荐指数
1
解决办法
5906
查看次数

使用重载函数作为一等公民

假设我们在一个类中有几个重载函数:

func appendToABC(string s: String) -> String {
    return "ABC \(s)"
}

func appendToABC(duplicatedString s: String) -> String {
    return "ABC \(s)\(s)"
}
Run Code Online (Sandbox Code Playgroud)

我们有一些API可以将函数作为参数:

func printString(function: (String) -> String) {
    print(function("ASD"))
}
Run Code Online (Sandbox Code Playgroud)

我们如何将appendToABC函数之一作为参数传递给printString函数?

我已经考虑过使用闭包来包装函数,但它看起来并不好看

printString { appendToABC(duplicatedString: $0) }
Run Code Online (Sandbox Code Playgroud)

first-class-functions swift

8
推荐指数
1
解决办法
96
查看次数

专用框架的App Transport Security设置

我正在为第三方开发人员创建一个私有框架,这些开发人员不需要了解服务器等任何信息URLs。我需要为进行一些设置ATS,但似乎info.plist无法在该框架的项目中进行更改。

我是在做错什么,还是应该做这样的事情,我不能ATS在框架范围内进行管理?

ios ios-frameworks app-transport-security

2
推荐指数
1
解决办法
745
查看次数