91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于IOS KVC的具體用法,一些蘋果文檔沒寫出來的細節

發布時間:2020-06-09 05:58:23 來源:網絡 閱讀:518 作者:zfajqp 欄目:移動開發

最近一些新人買了幾本關于IOS開發的書,但是關于KVC的比較少。一些KVC使用的關注點也讓人云里霧里。蘋果官方文檔也是簡單敘述了使用。但是一些細節沒寫清楚。

代碼如下:

建一個NSObject的類命名A

@interface A : NSObject

{

    NSString *_name;

    int  _count;

    NSArray *_arrA;

      B *_b;

    NSMutableArray *_all;

    NSArray *_allA;

}

 

建個B類

@interface B : NSObject

{

    NSString *_name;

    int _count;

    NSArray *_arrB;

}

 

然后在調用如下:

 /*內置函數列表

    @avg 返回數組或者集合中所有元素的平均值

    @count 返回組數或者集合中元素的個數

    @max 返回組數或者集合中所有元素的最大值

    @min 返回組數或者集合中所有元素的最小值

    @sum 返回組數或者集合中所有元素的總和

    @unoinOfArrays/@distinctUnionOfArrays 給定一系列數組,返回一個包含所有數組的數組。對于distinct版本,返回數組中的元素不重復

    @unionOfSets/@distinctUnionOfSets 給定一系列集合,返回一個包含所有集合的集合。對于distinct版本,返回集合中的元素不重復。

    @unionOfObjects/@distinctUnionOfObjects 給定一系列集合或者數組,返回一個包含所有元素的數組。對于distinct版本,返回數組中元素不重復。*/

    A *a=[[A alloc] init];

    B *b=[[B alloc] init];

    //[b setValue:@"zf" forKeyPath:@"_name"];

    [a setValue:b forKey:@"_b"];

    [a setValue:@"趙鋒" forKey:@"_name"];

    [a setValue:@(12) forKey:@"_count"];

    [a setValue:@[@1,@2,@3,@4] forKey:@"_arrA"];

    NSLog(@"%@ %@ %@",[a valueForKey:@"_name"],[a valueForKey:@"_count"],[a valueForKey:@"_arrA"]);

    [a setValue:@"趙鋒2" forKeyPath:@"_b._name"];//a里面b賦值了要使用路徑 必須保證 a里面的b不為null。(本人在上面賦值了)

//當b不為null就可以進行一下路徑使用了

    [a setValue:@(13) forKeyPath:@"_b._count"];

    [a setValue:@[@"e",@"f",@"g"] forKeyPath:@"_b._arrB"];

    NSLog(@"%@  %@  %@",[a valueForKeyPath:@"_b._name"],[a valueForKeyPath:@"_b._count"],[a valueForKeyPath:@"_b._arrB"]);

    

    NSMutableArray *temp=[[NSMutableArray alloc] init];

    for (int i=0; i<5; i++) {

        A *a2=[[A alloc] init];

        [a2 setValue:@(i+20) forKey:@"_count"];

        

        [temp addObject:a2];

    }

    for (int i=0; i<5; i++) {

        A *a2=[[A alloc] init];

        [a2 setValue:@(i+20) forKey:@"_count"];

        

        [temp addObject:a2];

    }

    

    

    

    [a setValue:temp forKey:@"_all"];

    NSMutableArray *t=[a valueForKey:@"_all"];    

 

    NSLog(@"%@" ,[t valueForKeyPath:@"@avg._count"]);

    NSLog(@"%@" ,[a valueForKeyPath:@"_all.@avg._count"]);//必須數組

//使用@指令函數 @avg  @count  @max  @min @sum 要保證左邊指令最后一層是數組

    

    A *a2=[[A alloc] init];

    [a2 setValue:@12 forKey:@"_count"];

    

    A *a3=[[A alloc] init];

    [a3 setValue:@13 forKey:@"_count"];

    

    A *a4=[[A alloc] init];

    [a4 setValue:@13 forKey:@"_count"];

    

    A *a5=[[A alloc] init];

    [a5 setValue:@15 forKey:@"_count"];

    

    NSArray *tt=[[NSArray alloc] initWithObjects:a2,a3,a4,a5,nil];

    

    a._allA=tt;

    NSLog(@"%@",[tt valueForKey:@"_count"]);

    NSLog(@"%@",[@[tt,t] valueForKeyPath:@"@unionOfArrays._count"]);//NSArray? 合并數組

    NSLog(@"%@",[@[tt,t] valueForKeyPath:@"@distinctUnionOfArrays._count"]);//對多個數組進行合并去重  

//注意使用的@[tt,t] 對多個數組有效     單個數組報錯 如下會報錯  

    NSArray* pencils = @[@{@"color": @"blue"},

    @{@"color": @"red"},

    @{@"color": @"blue"},

    @{@"color": @"green"}];

    //NSLog(@"color:%@",[pencils valueForKeyPath:@"@distinctUnionOfArrays.color"]);//錯誤

    //單個數組錯誤

    

    NSLog(@"%@",[a valueForKeyPath:@"_all.@unionOfObjects._count"]);

    NSLog(@"%@",[a valueForKeyPath:@"_all.@distinctUnionOfObjects._count"]);

    //對單個數組去重有效  多個無效  但不報錯   多個數組原來什么樣使用后還是什么樣

 

具體Demo  http://down.51cto.com/data/733639

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂伦春自治旗| 西昌市| 靖安县| 鲜城| 三穗县| 绵阳市| 广饶县| 分宜县| 五家渠市| 普安县| 绍兴市| 晋州市| 三亚市| 巫溪县| 元氏县| 定陶县| 南华县| 达拉特旗| 广州市| 临江市| 治县。| 布尔津县| 天长市| 清新县| 凭祥市| 梅州市| 谢通门县| 威宁| 南和县| 泾源县| 库尔勒市| 民和| 加查县| 公安县| 来安县| 务川| 防城港市| 栖霞市| 柏乡县| 洛南县| 高淳县|