是否有类似于$ scope。$ watch的NSMutableArray之类的东西

马克斯·亚历山大

为了解决这个问题,我已经努力了一天。我有NSMutableArray的项目。有时,在应用程序生命周期中,应用程序会在其中推送和弹出对象。我通常可以使用$ scope。$ watch在AngularJS上执行此操作。在此期间,我一直在使用ReactiveCocoa

本质上,我希望在这些事件上触发一个障碍。

-(void)fetchAllItems; -(void)push:(id)item; -(void)pop:(NSUInteger)index;

我用ReactiveCocoa尝试过,但是它永远不会触发!

[RACObserve(singletonStore, items) subscribeNext:^(NSArray *wholeArray) {
        NSUInteger count = [wholeArray count];
        [self.offerCircleButton setTitle:[NSString stringWithFormat:@"%d", count]]
 }];

items属性在singletonStore对象中声明为

@property (nonatomic, copy) NSArray *items;

getter和setter用于NSMutableArray作为私有变量

@interface SHSingletonStore()
{
    NSMutableArray *_items;
}
@end

-(NSArray *)items {
    return [_items copy];
}

-(void)setItems:(NSArray *)items{
    if([_items isEqualToArray:items] == NO){
        _items = [items mutableCopy];
    }
}
埃里克斯·普莱斯

本质上,我希望在这些事件上触发一个障碍。

-(void)fetchAllItems; -(void)push:(id)item; -(void)pop:(NSUInteger)index;

如果您要说的是要在每次调用这些方法中的任何一个时发出一个发送值的信号,则可以使用进行操作-rac_signalForSelector:,如下所示:

SEL fetchAllSEL = @selector(fetchAllItems);
RACSignal *fetchAllSignal = [singletonStore rac_signalForSelector:fetchAllSEL];

SEL pushSEL = @selector(push:);
RACSignal *pushSignal = [singletonStore rac_signalForSelector:pushSEL];

SEL popSEL = @selector(pop:);
RACSignal *popSignal = [singletonStore rac_signalForSelector:popSEL];

@weakify(self);
[[RACSignal merge:@[ fetchAllSignal, pushSignal, popSignal ]] subscribeNext:^(id _) {

    @strongify(self);
    [self.offerCircleButton setTitle:[NSString stringWithFormat:@"%d", singletonStore.items.count]]

}];

这种解决方案是总的,因为每个单独的合并信号都发送不同类型的值(因此您最终得到的信号可以发送3种不同类型的值,通常这并不酷),但是如果您忽略了该值,以便您可以基于某些全局状态执行某些副作用,这并不重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ruby是否有类似于。=的东西,例如+ =?

Django中是否有类似于“耙路”的东西?

在Java中是否有类似于strip_tags的东西?

在golang中是否有类似于sql.NullJson的东西?

JUnit 3是否有类似于@BeforeClass的东西?

Java中是否有类似于instanceOf(Class <?> c)的东西?

是否有类似于Java的mini-mvc-profiler的东西?

java是否具有类似于C#属性的东西?

Elixir中是否有类似于ruby send方法的东西?

是否有类似于ramda.js的lodash _.toArray的东西?

是否有类似于Android中的stringByAppendingPathComponent的东西?

React 是否有类似于 Angular 的 *ngIf 的东西?

IronPython 中是否有类似于 ENUM 的东西

是否有一些类似于JavaScript .querySelectorAll()的东西?

是否有类似于 xamarin 形式的 Unity void Update() 的东西?

是否有类似于tf.cond的东西,但有向量谓词?

是否有类似Iterator的东西,但具有Streams之类的功能?

在本地C中是否有类似于std :: lock_guard的东西?

Python生成器中是否有类似于“自我”的东西?

OkHttp是否具有类似于Unirest的用于创建RequestBody的field方法的更简单的东西?

对于多个字符,vim 中是否有类似于 f 命令的东西?

bash + bash脚本是否有类似于log4j的东西?

docker-compose 是否有类似于服务帐户和 kubernetes-client 库的东西?

在vb.net中是否有类似于“ with”的东西,但是功能呢?

除了台式机外,是否还有类似于背光`/ sys / class / backlight / ____ / brightness`的东西?

在 React Native 中,是否有类似于新 Pressable 组件中的 activeOpacity 道具的东西?

在 kotlin 和 android 中,是否有类似于 rxjs 或 rxjava 中的 switchmap 的东西?

React-Admin AutocompleteInput中是否有类似于Material-UI Autocomplete freeSolo的东西

Windows 上是否有类似于“ip tcp-metrics”的东西?