有人可以提供使用ReactiveCocoa抽象的单行示例来实现这样的事情:
// pseudo-code
NSMutableArray *array = @[[] mutableCopy];
RACSignal *newValue = RACAbleWithStart(array); // get whole array or maybe just added/removed element on push/pop
[newValue subscribeNext:^(NSArray *x) {
// x is whole array
}]
[newValue subscribeNext:^(id x) {
// x is new value
}]
[newValue subscribeNext:^(id x) {
// x is removed value
}]
Run Code Online (Sandbox Code Playgroud)
我看到NSArray的一些扩展被删除,有利于Mantle https://github.com/ReactiveCocoa/ReactiveCocoa/pull/130但是仍然找不到NSArray操作的简单示例.
也许我仍然在反应性学习曲线上挣扎,但我很难弄清楚如何将非反应类与其他反应代码联系起来.我正在使用一个类别来扩展非反应类.
该属性只是一个Enum,表示网络操作的当前状态,如New,Submitted,Processing和Completed.现在我在我的类别中写了以下方法:
@implementation JRequestBase (RACExtensions)
- (RACSignal*) rac_RequestStateSignal
{
return RACAble(self, state);
}
@end
Run Code Online (Sandbox Code Playgroud)
但是,当状态从Processing - > Completed或从任何状态转换为Errored时,我希望此信号发送Completed或Error而不是Next Value.我怎样才能在一个类别中实现这一目标?我想做的事情如下:
@implementation JRequestBase (RACExtensions)
- (RACSignal*) rac_RequestStateSignal
{
return [RACAble(self, state) map:^(NSNumber *state){
if ([state intValue] == iRequestStateComplete)
{
# SEND COMPLETE
}
else if ([state intValue] == iRequestStateErrored)
{
# SEND ERROR
}
else
{
return state;
}
}];
}
@end
Run Code Online (Sandbox Code Playgroud)
编辑:我看了一下GHAPIDemo并提出了以下建议:
- (RACSignal*) rac_RequestSignal
{
RACSubject *subject = [[RACReplaySubject alloc] init];
[[RACAble(self, state) subscribeNext:^(NSNumber* s){
if ( [s intValue] == …Run Code Online (Sandbox Code Playgroud) 我有一组包含personID的字符串,我有一个NSFetchedResults的人员managedObjects具有唯一的strPersonIDs.我试图创建一个NSPredicate但它失败了.任何有关这方面的帮助将不胜感激.我对NSPredicate有点新意,所以请善待.
NSSet *zipSet = [NSSet setWithSet:[self getziplist:searchText]];
searchString = [NSString stringWithFormat:@"(strPersonID IN %@)",zipSet];
NSPredicate *searchPersonPredicate = [NSPredicate predicateWithFormat:searchString];
Run Code Online (Sandbox Code Playgroud)
运行时错误消息是:由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法解析格式字符串"(strPersonID IN {(300040,300082,412218)})"'
在iOS 4.3 Simulator上,以下代码返回一个非常小的数字:1e-700在GCC 4.2上,但在LLVM-GCC 4.2上按预期工作.有任何想法吗?
NSDate *selectedDate = self.datepicker.date; // guaranteed to be before now
NSTimeInterval interval = [nowDate timeIntervalSinceDate:selectedDate];
Run Code Online (Sandbox Code Playgroud)
这些值随每次运行而变化,但这是一组示例输出
selectedDate: 1981-06-02 16:27:34 +0000
nowDate: 2011-08-03 05:18:36 +0000
间隔: 5.489011535689859e-277
[nowDate timeIntervalSinceDate:selectedDate]在GDB中运行:( 952001462.97236204这是我的期望值)
typedef void (*funcNetworkEventReceived)(int, unsigned int, int);
谢谢.