我试图Bool通过使用以下代码应用逻辑运算符OR(||)来减少s 数组,但是我得到一个错误:
func reduceBools(values: [Bool]) -> Bool {
return values.reduce(false, combine: ||)
}
Run Code Online (Sandbox Code Playgroud)
对成员'||'的模糊引用
类似于整数,代码就像一个魅力.
func reduceInts(values: [Int]) -> Int {
return values.reduce(0, combine: +)
}
Run Code Online (Sandbox Code Playgroud)
我能够通过添加一个||函数(下面的代码)或使用{ $0 || $1 }闭包来使它工作,但我不喜欢这些方法,我宁愿只是传递运算符.
func ||(lhs: Bool, rhs: Bool) -> Bool {
return lhs || rhs
}
Run Code Online (Sandbox Code Playgroud)
逻辑AND(&&)运算符也会发生同样的事情.
如何在不使用上述黑客的情况下使其工作?
closures functional-programming logical-operators swift swift2
如何使用自定义声音进行推送通知?
根据我的研究和阅读,我发现有效负载应该具有应用程序包中或应用程序数据容器的Library/Sounds文件夹中的文件名.
如何把文件放在那里?
协方差如何Optional在Swift中运行?
说我写下面的代码:
var nativeOptionalView: Optional<UIView>
let button = UIButton()
nativeOptionalView = .Some(button)
var nativeOptionalButton = Optional.Some(button)
nativeOptionalView = nativeOptionalButton
Run Code Online (Sandbox Code Playgroud)
它编译和工作得很好.但是,如果我定义MyOptional为
enum MyOptional<T> {
case Some(T)
case None
}
Run Code Online (Sandbox Code Playgroud)
并写下以下内容:
var myOptionalView: MyOptional<UIView>
let button = UIButton()
myOptionalView = .Some(button)
var myOptionalButton = MyOptional.Some(button)
myOptionalView = myOptionalButton
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误:无法指定类型'
MyOptional<UIButton>'的值来键入'MyOptional<UIView>'
我理解为什么会出现这种错误MyOptional,我不明白为什么它不会发生Optional.
从昨天开始,我遇到了一些设备无法接收推送通知的问题.证书/设备令牌似乎是正确的,因为该设备用于成功接收推送通知直到昨天.
在服务器端,没有错误或连接拒绝,并且推送通知似乎每次都成功发送.
但是,在很多情况下,设备无法正确接收推送.
一些周边信息:
当推送成功时,以及当设备没有收到时,服务器端结果没有区别......因此几乎不可能识别问题.
这是我使用的服务器端PHP代码:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $this->apnsData[$development]['certificate']);
$fp = stream_socket_client($this->apnsData[$development]['ssl'], $error, $errorString, 100, (STREAM_CLIENT_C ONNECT|STREAM_CLIENT_PERSISTENT), $ctx);
if(!$fp){
$this->_pushFailed($pid);
$this->_triggerError("Failed to connect to APNS: {$error} {$errorString}.");
}
else {
$msg = chr(0).pack("n",32).pack('H*',$token).pack("n",strlen($message)).$message;
$fwrite = fwrite($fp, $msg);
if(!$fwrite) {
error_log("[APNS] push failed...");
$this->_pushFailed($pid);
$this->_triggerError("Failed writing to stream.", E_USER_ERROR);
}
else {
error_log("[APNS] push successful! ::: $token -> $message ($fwrite bytes)");
}
}
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
日志告诉我推送成功(删除令牌以保护隐私):
[Wed Dec 12 11:42:00 …Run Code Online (Sandbox Code Playgroud) 我想使用自定义的混合模式(线性燃烧)来混合SKSpriteNodes的我SKScene但唯一可用的选项是Add,Subtract,Multiply,MultiplyX2,Screen,和Replace.
有没有办法设置自定义混合模式?我可以使用着色器混合所有精灵吗?如果是这样,怎么样?
我的情况与此问题中描述的情况非常相似(但是批量处理,而不是shell).我做了一个简单的批处理脚本来遍历一个磁贴的行并使用python脚本从服务器下载数据(该过程本身比简单下载更复杂,它必须通过API进行身份验证并获取多个URL).
第一个版本如下:
for /F "tokens=*" %%A in (client_name_list.txt) do python download_metadata.py "%%A"
Run Code Online (Sandbox Code Playgroud)
它的方式是等待每次迭代完成后再继续,所以我将其更新为以下内容:
for /F "tokens=*" %%A in (client_name_list.txt) do start cmd /C python download_metadata.py "%%A"
Run Code Online (Sandbox Code Playgroud)
第二个版本执行我想要的但是,因为文件client_name_list.txt大约是30,000行,所以很多命令提示开始产生并且计算机在几秒钟内冻结.
如何限制CMD运行实例的数量(例如10)并使脚本等到有一个"免费CMD插槽"进入下一行?