我很抱歉,如果这个论点已被涵盖,但经过一些研究后我发现没有什么精确的.
我需要创建一个基于文档的应用程序,其中文档实际上不是单个文件,而是目录中的文件的结构化集合.窗口将显示包含在文件夹中的pdf,具有特定的文件名,并使用文件夹中其他文件的信息进行丰富.我无法使用pdf注释来实现这一点,我真的需要将文件与pdf分开.
实现这一目标的最佳方法是什么?我找到的所有示例代码都使用单个文件..
我正在尝试学习库RxSwift
我有一些像这样的代码:
if data.checkAllIsOk()
{
[do things]
}
else
{
[show alert]
}
Run Code Online (Sandbox Code Playgroud)
现在我需要在检查之前更新服务器上的数据,因此我建模了一个返回Observable的getData().
我目前的做法是:
getData()
>- flatMap{ (data:Data) -> Observable<Bool> in
_=0 // workaround for type inference bugs
return just(data.checkAllIsOk())
}
>- subscribeNext{ (ok) -> Void in
if ok
{
[do the things]
}
else
{
[show the alert]
}
}
>- disposeBag.addDisposable()
Run Code Online (Sandbox Code Playgroud)
它的工作原理(或它应该,我仍然在写它),但它感觉不对..是否有更"反应"的方式来做它?什么是最合适的运营商?
也许为"false"返回错误并使用catch块?
更新
按照ssrobbi建议的方法,我在2个不同的subscribeNext中拆分了2个分支,并使用过滤器来选择正或负分支.这是产生的代码:
let checkData=getData()
>- flatMap{ (data:Data) -> Observable<Bool> in
_=0
return just(data.checkAllIsOk())
}
>- shareReplay(1)
}
[...]
checkData
>- filter{ (ok) -> …Run Code Online (Sandbox Code Playgroud) 我写了一个这样的类:
struct Size {
var width:Double=0
var height:Double=0
init(width:Double=0,height:Double=0)
{
self.width=width
self.height=height
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
现在我希望能够为某个数字划分大小,并且我想使用泛型来获取可转换为 Double 的每种类型的函数。例如Int,CGFloat,Float
但是当我插入函数时:
func /<T>(lhs:Size,rhs:T)->Size
{
return Size(width:lhs.width/Double(rhs),height:lhs.height/Double(rhs))
}
Run Code Online (Sandbox Code Playgroud)
我收到错误
error: cannot invoke 'init' with an argument list of type '(width: Double, height: Double)'
return Size(width:Double(lhs.width/rhs),height:Double(lhs.height/rhs))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
这真的很奇怪,因为传递的列表是类(Double)中定义的确切类型。
如果我以这种方式重写它:
func /<T>(lhs:Size,rhs:T)->Size
{
let drhs=Double(rhs)
return Size(width:lhs.width/drhs,height:lhs.height/drhs)
}
Run Code Online (Sandbox Code Playgroud)
然后我得到错误:
error: cannot invoke 'init' with an argument of type 'T'
let drhs=Double(rhs)
^~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
这更奇怪,因为 Swift 库文件有很多 Double、Int 或 Float 类型的初始化器:
extension …Run Code Online (Sandbox Code Playgroud)