小编sol*_*ell的帖子

为什么协议中的get-only属性要求不能满足符合的属性?

为什么以下代码会产生错误?

protocol ProtocolA {
    var someProperty: ProtocolB { get }
}

protocol ProtocolB {}
class ConformsToB: ProtocolB {}

class SomeClass: ProtocolA { // Type 'SomeClass' does not conform to protocol 'ProtocolA'
    var someProperty: ConformsToB

    init(someProperty: ConformsToB) {
        self.someProperty = someProperty
    }
}
Run Code Online (Sandbox Code Playgroud)

这个类似问题的答案是有道理的.但是,在我的示例中,属性是get-only.为什么不能这样做?它是Swift的缺点,还是有一些合理的理由?

swift swift-protocols

35
推荐指数
1
解决办法
1138
查看次数

使用RxSwift观察UITextField.editing

我想观察房产UITextfield.editing.我正在使用此代码:

self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
    print("")
}.addDisposableTo(disposeBag)
Run Code Online (Sandbox Code Playgroud)

但是在运行过程中,它只执行一次.请问我该如何解决这个问题

ios swift rx-swift reactivex rx-cocoa

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

RxSwift合并了不同类型的Observable

我应该如何Observable在RxSwift中合并两种不同类型的s?

例如:

var a: Observable<Int>
var b: Observable<Void>
Run Code Online (Sandbox Code Playgroud)

Observable.of(a,b).merge() 因类型参数不同而无法实现.

frp swift rx-swift

14
推荐指数
2
解决办法
8739
查看次数

在开发CocoaPod时使用CocoaPod依赖项

比方说MyPod,我正在创建一个CocoaPod,这取决于另一个Cocoapod RxSwift.

所以我有这个MyPod.podspec:

s.dependency "RxSwift", "~> 3.0.1"
Run Code Online (Sandbox Code Playgroud)

但是,在开发时MyPod,我如何实际使用依赖?

import RxSwift
//     ^
// No such module 'RxSwift'

public class MyClass { //...
Run Code Online (Sandbox Code Playgroud)

我缺少一个步骤,还是一些常见的约定?看起来像Moya这样的其他项目正在使用Carthage在开发过程中构建依赖项.我应该这样做,还是可以添加一个Podfile

我知道这对于位于repo中的示例应用程序来说应该不是问题,它应该有自己的Podfile.但是,我仍然希望测试位于示例应用程序之外的顶层,并且能够在处理它时实际构建框架,同样,在示例应用程序之外.

xcode frameworks ios cocoapods swift

14
推荐指数
2
解决办法
2815
查看次数

在Swift中创建一个字典

我有一个取自Parse的对象,我想将其列保存到一个Dictionary或其他东西(如果它更好).

我想要这样的字典: ["name" : "Mike", "lastname" : "vorisis", "id" : "advsas"]

以下是我用来获取结果的代码:

func queryEvents() {
    let query = PFQuery(className: "eventController")
    query.limit = 1000
    query.includeKey("idEvent")
    query.includeKey("eventType")
    query.includeKey("idEvent.idMagazi")
    query.findObjectsInBackgroundWithBlock { (objects, error)-> Void in
        if let objects = objects  {
            for object in objects {
                var post = object["idEvent"] as? PFObject
                var post2 = post!["idMagazi"]
                print("retrieved related post: \(post2["name"]!)")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

dictionary ios parse-platform swift

12
推荐指数
3
解决办法
7412
查看次数

是否有一个Observable的首选类型,在Next事件中不需要值?

我有一个Observable,它只用于触发flatMap/ map.所以我只需要这个Next活动,而不是一个价值.我可以将自己的概念用于这样的垃圾值,但我想知道是否有一个RxSwift约定.

这是我正在处理的事情:

// I'd rather not have an Element type that someone might use
let triggeringObservable: Observable<SomeSessionClass> 

// ...

triggeringObservable.map { _ -> String in // The actual value is ignored
    return SomeLibrary.username() // `username()` is only ready when `triggeringObservable` sends Next
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,triggeringObservablerx_observer在将让我们知道,库某些属性username()是随时可以调用.

swift rx-swift reactivex

11
推荐指数
4
解决办法
5684
查看次数

RxSwift:将元素追加到Observable <[_]>

我有一个array(Observable<[_]>),它是tableview的数据源.我希望能够向它添加新元素,并在每次将新元素附加到数组时更新tableview.我找不到如何添加新元素Observable<[_]>.

swift rx-swift

8
推荐指数
1
解决办法
7837
查看次数

RxSwift 和 UICollectionView 标头

我正在使用RxSwift我的UIViewController包含UICollectionView. 我试图在我的集合视图中添加一个标题,但从未调用过:

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath)
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift rx-swift

7
推荐指数
3
解决办法
9701
查看次数

初始声明后可以添加属性观察者吗?

例如,我想在类实例上调用一个方法来添加willSet属性.我不想willSet在属性的声明中指定,因为我需要在观察者中添加条件逻辑,并且对于没有调用此方法的每个其他实例,它将被不必要地运行.

像这样的东西:

var someProperty: Int

func someMethod() {
    someProperty {  // this is the syntax/ability I'm unsure about
        willSet { ...add some behavior... }
    }

    ...more stuff...
}
Run Code Online (Sandbox Code Playgroud)

swift

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

RxSwift:使用rx_refreshing进行uirefreshcontrol

我正在使用UIRefreshControl+ Variable绑定来重新加载数据.

然而,它正在起作用,以下对我来说是错误的:

1)我知道扩展中有一个rx_refreshing变量RXCocoa,但我无法让它在这种情况下工作.

2)我Variable两次绑定答案(这是一个数组).一旦我加载视图控制器,并在UIRefreshControl刷新时再次.

3)我检查是否UIRefreshControl清爽的部分看起来很尴尬.感觉它是否违背了使用反应的目的?

...

let answers: Variable<[Answer]> = Variable([])

override func viewDidLoad() {       
  loadAnswers()
     .shareReplay(1)
     .bindTo(answers)
     .addDisposableTo(self.disposeBag)
  setupRx()
}

func loadAnswers() -> Observable<[Answer]> {
  return Network.rxArrayRequest(Spark.Answers)
}  

func setupRx() {
  rc.rx_controlEvent(.ValueChanged)
    .map { _ in !self.rc.refreshing }
    .filter { $0 == false }
    .flatMapLatest { [unowned self] _ in
      return self.loadAnswers()
    }
    .bindTo(answers)
    .addDisposableTo(self.disposeBag)

  rc.rx_controlEvent(.ValueChanged)
    .map { _ in self.rc.refreshing }
    .filter { $0 …
Run Code Online (Sandbox Code Playgroud)

ios uirefreshcontrol swift rx-swift

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