小编Sam*_*io2的帖子

从委托返回元组(未解包的可选类型的值)

我已经定义了一个带有返回元组的方法的协议:

protocol SMCalculatorDelegate {

    func numbersToAdd() -> (Int, Int)

}
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的类中的委托方法中调用此方法时,如下所示:

class SMCalculator: NSObject {

    var delegate : SMCalculatorDelegate?

    func add() {

        let myTuple : (n1: Int, n2: Int) = delegate?.numbersToAdd()

    }

}
Run Code Online (Sandbox Code Playgroud)

我在开始let myTuple...引用.numbersToAdd()该行代码部分的行上得到以下错误.

"Value of optional type '(Int, Int)?' not unwrapped; did you mean to use '!' or '?'?"
Run Code Online (Sandbox Code Playgroud)

当我能像这样没有错误地提取元组时,为什么这不起作用?

let tuple = delegate?.numbersToAdd()

println(tuple) //Prints (5,5)
Run Code Online (Sandbox Code Playgroud)

tuples ios swift

6
推荐指数
1
解决办法
4507
查看次数

在MatLAB中从数组中获得最接近零的值?

一个有趣的(也可能是简单的)问题,我有两个数组,我需要确定实际最小值(即最接近零的值)和实际最大值(即最远为零的值),无论该值是否为正值或否定的.

为此,我计算了positive_max和positive_min,以及negative_max和negative_min,如下所示......

test = [3, 4, -2, -7, 6];

positive_min = min(test(test>=0)); %Should be 3
positive_max = max(test(test>=0)); %Should be 6

negative_max = min(test(test<=0)); %Should be -7
negative_min = max(test(test<=0)); %Should be -2
Run Code Online (Sandbox Code Playgroud)

麻烦的是,我现在需要将positive_min与negative_min进行比较以查看哪个最接近零,以及将positive_max与negative_max进行比较以查看哪个距离零最远.我似乎无法弄清楚如何做到这一点......

我将不胜感激任何帮助!

sorting matlab logic

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

这是比较两个GCD队列的正确方法吗?

在关于SO的早期问题之后,我现在想要比较两个不同的大型中央调度队列,以尝试确定当前代码是否在主线程上运行.我的问题很简单:这是实现这一目标的有效方法吗?或者是否有一些我没有考虑过这样做的陷阱?

if (dispatch_get_current_queue() != dispatch_get_main_queue()) {

    // We are currently on a background queue

} else {

    // We are on the main queue
}
Run Code Online (Sandbox Code Playgroud)

干杯

queue grand-central-dispatch ios

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

使用块的返回值动态创建字符串

所以我正在尝试动态构建一个字符串,我真的很喜欢构建这个字符串的所有代码都存在于作为参数传递给stringWithFormat方法的块中.以下代码示例应该演示我正在尝试实现的目标:

    NSString * deviceLanguage = [NSString stringWithFormat:@"Device Language: %@", ^NSString*(void){

        NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];

        NSString *locale = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];

        return [NSString stringWithFormat:@"%@_%@", language, locale];

    }];
Run Code Online (Sandbox Code Playgroud)

预期的输出将是......

Device Language: en_GB
Run Code Online (Sandbox Code Playgroud)

但是,我从这个方法获得的输出实际上返回description了NSGlobalBlock方法,例如

Device Language: <__NSGlobalBlock__:0x30a35c>
Run Code Online (Sandbox Code Playgroud)

这是因为我没有在字符串中使用正确的占位符,或者没有声明该块返回一个NSString对象?

string objective-c ios objective-c-blocks

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

如何从任何NSObject子类显示UIAlertController?

我有一个我正在管理的遗留代码库,它需要显示来自各地的警报消息.这是一种可怕的做法,需要一个重构,但这不会很快发生.使用iOS 9,我需要能够触发并忘记警报视图,并为我管理视图显示和排队.

uialertview ios uialertcontroller ios9

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