iOS keyValue方法的使用
//TZPerson是普通的繼承自NSObject的類
TZPerson.h
#import <Foundation/Foundation.h>
@interface TZPerson : NSObject
@property (nonatomic, strong) NSString* name;
@property (nonatomic, assign) int age;
@property (nonatomic, strong) NSString* nick;
@property (nonatomic, assign) float height;
@end
TZPerson.m
@implementation TZPerson
// 賦值key值不存在
- (void) setValue:(id)value forUndefinedKey:(NSString *)key {
NSLog(@"key = %@值不存在 ", key);
}
@end
//在外部view中使用keyValue 來呼叫TZPerson的屬性
ViewController.m
/// KVC字典操作
- (void) dictionaryTest {
TZPerson* p = [TZPerson new];
NSDictionary* dict = @{
@"name":@"Tom",
@"age":@18,
@"nick":@"Cat",
@"height":@180,
@"dd":@"helo"
};
//根據字典裡的key給P物件賦對應的value值
[p setValuesForKeysWithDictionary:dict];
NSLog(@"p.name = %@, p.age = %d, p.nick =%@, p.height = %f", p.name, p.age, p.nick, p.height);
NSArray* keys = @[@"name", @"age"];
NSDictionary* dict1 = [p dictionaryWithValuesForKeys:keys];
NSLog(@"%@", dict1);
}
/// KVC訊息傳遞 array
- (void) arrayKVCTest {
/*對陣列而言,valueForKey方法的作用是把valueForKey的引數以訊息的方式傳送給陣列的每一個元素*/
NSArray* arr = @[@"Monday", @"Tuesday", @"Wednesday"];
//獲取arr陣列中每一個元素的length屬性並返回一個陣列
NSArray* lengthArr = [arr valueForKey:@"length"];
NSLog(@"%@", lengthArr);
//arr陣列中每一個元素執行lowercaseString方法並結果返回給lowercaseArr陣列
NSArray* lowercaseArr = [arr valueForKey:@"lowercaseString"];
NSLog(@"%@", lowercaseArr);
}
/// 聚合操作符 @avg、@count、@max、@min、@sum
- (void) contrainerTest {
NSMutableArray* students = [NSMutableArray array];
for (int i = 0; i < 6; i++) {
TZPerson* student = [TZPerson new];
NSDictionary* dict = @{
@"name":@"Tom",
@"age":@(18+i),
@"nick":@"Cat",
@"height":@(1.65 + 0.02*arc4random_uniform(6)),
};
[student setValuesForKeysWithDictionary:dict];
[students addObject:student];
}
NSLog(@"%@", [students valueForKey:@"height"]);
/// 平均身高, @avg是獲取平均值的聚合運算子,其他的以此類推
float avg = [[students valueForKeyPath:@"@avg.height"] floatValue];
NSLog(@"%f", avg);
}
/// 陣列操作符 @distinctUnionOfObjects @unionOfObjects
- (void) contrainerArrayTest {
NSMutableArray* students = [NSMutableArray array];
for (int i = 0; i < 6; i++) {
TZPerson* student = [TZPerson new];
NSDictionary* dict = @{
@"name":@"Tom",
@"age":@(18+i),
@"nick":@"Cat",
@"height":@(1.65 + 0.02*arc4random_uniform(6)),
};
[student setValuesForKeysWithDictionary:dict];
[students addObject:student];
}
NSLog(@"%@", [students valueForKey:@"height"]);
//distinctUnionOfObjects陣列中去重
NSArray* arr = [students valueForKeyPath:@"@distinctUnionOfObjects.height"];
NSLog(@"arr = %@", arr);
//unionOfObjects不去重
NSArray* arr1 = [students valueForKeyPath:@"@unionOfObjects.height"];
NSLog(@"arr1 = %@", arr1);
}
相關文章
- PHP多維陣列KeyValue的使用PHP陣列
- axios baseURL 的使用方法iOS
- 源自於NEO的KeyValue 資料庫面世啦資料庫
- axios 攔截器 的使用方法iOS
- iOS自己使用的一些小方法iOS
- [IOS開發教程] NSfileManager的使用方法iOS
- axios常見的使用方法(精選)iOS
- iOS UICollectionView的簡單使用和常用代理方法iOSUIView
- iOS使用Unicode9.0 emoji表情的方法iOSUnicode
- vue axios資料請求get、post方法的使用VueiOS
- iOS教程 免費使用SMSSDK語音驗證的方法iOS
- iOS開發UI中懶載入的使用方法iOSUI
- iOS Masonry 一些日常使用方法iOS
- 給 axios 和 redux-axios-middleware 新增finally方法 的使用心得iOSRedux
- XCODE6中使用iOS7 SDK的方法XCodeiOS
- 關於axios以及jsonp的簡單使用方法iOSJSON
- axios的使用iOS
- iOS · WCDB的使用iOS
- iOS WKWebView的使用iOSWebView
- Nuxt使用axios跨域問題解決方法UXiOS跨域
- iOS螢幕截圖的方法iOS
- 動態生成ios plist的方法iOS
- Nagiosql安裝的配置方法iOSSQL
- 【iOS】category重寫方法的呼叫iOSGo
- php ios通用的AES加密方法PHPiOS加密
- iOS漢字轉拼音的方法iOS
- ios cocos2d TexturePacker生成檔案後的使用方法iOS
- Swift iOS: UITableView的使用SwiftiOSUIView
- IOS中的動畫使用iOS動畫
- iOS中RAC的使用iOS
- iOS藍芽開發CoreBlueTooth庫核心方法使用介紹iOS藍芽
- IOS 學習筆記(6) 控制元件 文字域(UITextField)的使用方法iOS筆記控制元件UI
- 『IOS』使用優雅的錨點開發iosiOS
- iOS常見的幾種加密方法iOS加密
- Axios的正確食用方法iOS
- iOS NSString中實用的方法iOS
- 提高iOS App開發效率的方法iOSAPP
- iOS 適配低版本的方法iOS