美文网首页
RAC_3.集合类

RAC_3.集合类

作者: Iris_Fighting | 来源:发表于2018-04-04 15:54 被阅读10次

3.集合类

3.1 RACTuple——元组类,类似NSArray,用来包装值.

RACTuple *tuple = [RACTuple tupleWithObjectsFromArray:@[@"小红",@"小明",@"小小",@"Gai爷"]];
    NSString * str = tuple[0];
    NSLog(@"%@",str);

运行如图


image

3.2 RACSequence——RAC中的集合类,用于代替NSArray,NSDictionary,可以使用它来快速遍历数组和字典。

  • ①遍历数组
    NSArray *array = @[@"小红",@"小明",@"小小",@"Gai爷"];
    [array.rac_sequence.signal subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@",x);
    }];

运行如图


image
  • ②遍历字典

简单模式

    NSDictionary *dict = @{
                           @"1":@"小明",
                           @"2":@"小红",
                           @"3":@"笑笑",
                           @"4":@"gai爷"
                           };
    [dict.rac_keySequence.signal subscribeNext:^(id  _Nullable x) {
        NSLog(@"rac_keySequence ==%@",x);
    }];
    
    [dict.rac_sequence.signal subscribeNext:^(RACTwoTuple * x) {
        NSLog(@"rac_sequence == %@ ++ %@",x[0],x[1]);
    }];

运行如图:


image

添加宏RACTupleUnpack

                           @"1":@"小明",
                           @"2":@"小红",
                           @"3":@"笑笑",
                           @"4":@"gai爷"
                           };
//    [dict.rac_keySequence.signal subscribeNext:^(id  _Nullable x) {
//        NSLog(@"rac_keySequence ==%@",x);
//    }];
    
    [dict.rac_sequence.signal subscribeNext:^(RACTwoTuple * x) {
        NSLog(@"rac_sequence == %@ ++ %@",x[0],x[1]);
        RACTupleUnpack(NSString * key,NSString * value) = x;
        NSLog(@"%@ : %@",key,value);
    }];

运行如图:


image

RACTupleUnpack是不是和我的x[0],x[1]一样

  • ③字典转模型

KFC.h

#import <Foundation/Foundation.h>

@interface KFC : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *icon;

+ (instancetype)kfcWithDict:(NSDictionary *)dict;
@end

KFC.m

#import "KFC.h"

@implementation KFC

+ (instancetype)kfcWithDict:(NSDictionary *)dict {
    KFC *kfc  = [[KFC alloc]init];
    [kfc setValuesForKeysWithDictionary:dict];
    return kfc;
}

@end

SetViewController.m

    NSString *pathStr = [[NSBundle mainBundle]pathForResource:@"kfc.plist" ofType:nil];
    NSArray *array = [NSArray arrayWithContentsOfFile:pathStr];
    
    NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:array.count];
    
    [array.rac_sequence.signal subscribeNext:^(NSDictionary * x) {
        KFC *kfc = [KFC kfcWithDict:x];
        NSLog(@"%@",kfc);
        [arrayM addObject:kfc];
    }];

我们首先要创建一个空数组,通过模型的一个类方法将我们接收到的数据转成模型,再保存到数组中。
当然还有更爽的方法,集合的映射:它会将一个集合中的所有元素都映射成一个新的对象!

    NSString *pathStr = [[NSBundle mainBundle]pathForResource:@"kfc.plist" ofType:nil];
    NSArray *array = [NSArray arrayWithContentsOfFile:pathStr];
    
    //会将一个集合中的所有元素都映射成一个新的对象!
    NSArray * arr = [[array.rac_sequence map:^id _Nullable(NSDictionary * value) {
        //返回模型!!
        return  [KFC kfcWithDict:value];
    }] array];
    NSLog(@"%@",arr);

相关文章

  • RAC_3.集合类

    3.集合类 3.1 RACTuple——元组类,类似NSArray,用来包装值. 运行如图 3.2 RACSequ...

  • Java集合

    集合概述 •Java提供集合类,集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有集合类都位于jav...

  • 14. 集合类

    1. Kotlin的集合类 Kotlin的集合类分为可变集合类和不可变集合类 2. 常用的三种集合类 主要有三种:...

  • Java 容器 - 一文详解HashMap

    Map 类集合 Java Map类集合,与Collections类集合存在很大不同。它是与Collection 类...

  • Collection 集合类

    Collection 集合类 java.util包中提供了一些集合类,这些集合类又称为容器;集合类和数组的区别在于...

  • Java集合类-集合类图谱

    数据结构在计算机知识体系中的重要性无需赘言,Java的jdk的集合类正是学习数据结构的很好素材。如果能把jdk的集...

  • 第10章 集合类与泛型 《Kotin 编程思想·实战》

    第10章 集合类与泛型 10.1 Kotlin集合类10.1.1 不可变集合类10.1.1.1 List10.1....

  • 那些年我们追过的Java面试之集合类、异常处理

    标签:Java面试、集合类、异常处理 2017/05/09 09:36 三.Java集合类 10.Java集合类框...

  • 函数的定义和调用

    3.1 创建集合 kotlin没有采用自己的集合类,而是采用的标准的java集合类。在java集合类的基础上新增了...

  • Java集合类总结

    Java集合类 1.简介: java集合类包含在java.util包下集合类存放的是对象的引用,而非对象本身。集合...

网友评论

      本文标题:RAC_3.集合类

      本文链接:https://www.haomeiwen.com/subject/feokhftx.html