我已经定义了一个带有返回元组的方法的协议:
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) 一个有趣的(也可能是简单的)问题,我有两个数组,我需要确定实际最小值(即最接近零的值)和实际最大值(即最远为零的值),无论该值是否为正值或否定的.
为此,我计算了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进行比较以查看哪个距离零最远.我似乎无法弄清楚如何做到这一点......
我将不胜感激任何帮助!
在关于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)
干杯
所以我正在尝试动态构建一个字符串,我真的很喜欢构建这个字符串的所有代码都存在于作为参数传递给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
对象?
我有一个我正在管理的遗留代码库,它需要显示来自各地的警报消息.这是一种可怕的做法,需要一个重构,但这不会很快发生.使用iOS 9,我需要能够触发并忘记警报视图,并为我管理视图显示和排队.