小编fpg*_*503的帖子

比较Swift中的两个版本字符串

我有两个不同的应用程序版本字符串(即"3.0.1"和"3.0.2").

如何使用Swift比较这些?

ios swift

56
推荐指数
6
解决办法
2万
查看次数

在reduce中使用逻辑运算符作为组合闭包

我试图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

22
推荐指数
3
解决办法
4747
查看次数

更改推送通知声音

如何使用自定义声音进行推送通知?

根据我的研究和阅读,我发现有效负载应该具有应用程序包中或应用程序数据容器的Library/Sounds文件夹中的文件名.

如何把文件放在那里?

push-notification apple-push-notifications ios

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

可选协方差如何在Swift中工作

协方差如何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.

covariance optional swift

12
推荐指数
1
解决办法
405
查看次数

推送通知已成功发送,但设备未收到(偶尔)

从昨天开始,我遇到了一些设备无法接收推送通知的问题.证书/设备令牌似乎是正确的,因为该设备用于成功接收推送通知直到昨天.

在服务器端,没有错误或连接拒绝,并且推送通知似乎每次都成功发送.

但是,在很多情况下,设备无法正确接收推送.

一些周边信息:

  • 我在生产环境中这样做.
  • 服务器端没有错误/连接拒绝
  • 我每次都发送完全相同的JSON.
  • 自昨天起,我们的2台设备未收到AT ALL的推送通知
  • 我们的设备中有一个接收推送通知的成功率(约70%)低于昨天
  • 即使是现在,我们仍有1到2台设备成功接收推送通知.
  • 所有上述设备都能够在生产环境中正确接收推送通知,直到昨天.

当推送成功时,以及当设备没有收到时,服务器端结果没有区别......因此几乎不可能识别问题.

这是我使用的服务器端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)

php iphone apple-push-notifications

9
推荐指数
1
解决办法
9556
查看次数

如何在SpriteKit中创建自定义混合模式

我想使用自定义的混合模式(线性燃烧)来混合SKSpriteNodes的我SKScene但唯一可用的选项是Add,Subtract,Multiply,MultiplyX2,Screen,和Replace.

有没有办法设置自定义混合模式?我可以使用着色器混合所有精灵吗?如果是这样,怎么样?

shader blending glsl sprite-kit

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

限制批处理脚本中生成的进程数

我的情况与此问题中描述的情况非常相似(但是批量处理,而不是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插槽"进入下一行?

windows parallel-processing cmd batch-file limit

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