在APP有動(dòng)態(tài)配置的情況下听诸,經(jīng)常需要判斷你所傳的值是否跟你想跳轉(zhuǎn)的控制器內(nèi)的參數(shù)相同桃纯,需要在跳轉(zhuǎn)前進(jìn)行一些判斷來防止控制器崩潰
判斷控制器中是否擁有該字符串值的變量
/**
判斷控制器中是否擁有該字符串值的變量
@param obj 控制器
@param keystring 字符串值
@return 是否擁有
*/
+ (BOOL)isPropertyFromObj:(id)obj WithKeyString:(NSString *)keystring {
u_int count = 0;
//存儲(chǔ)成員變量名稱的數(shù)組
NSMutableArray *propertyArray = [NSMutableArray array];
//獲取控制器的成員變量數(shù)組
objc_property_t *properties = class_copyPropertyList([obj class], &count);
__block BOOL isProperty;
for (int i = 0; i < count; i++) {
// 取出成員變量
objc_property_t property = properties[i];
// 成員變量名字
NSString *keyValue = [NSString stringWithFormat:@"%s",property_getName(property)];
[propertyArray addObject:keyValue];
}
//判斷成員變量名字?jǐn)?shù)組中是否包含該參數(shù)
if ([propertyArray containsObject:keystring]) {
///有這個(gè)參
isProperty = YES;
}else {
///沒有這個(gè)參
isProperty = NO;
}
return isProperty;
}
判斷控制器是否擁有字典所傳的值
/**
判斷控制器是否擁有字典所傳的值
@param obj 控制器
@param dict 所傳入的字典參數(shù)
@return 是否擁有
*/
+ (BOOL)isPropertyFromObj:(id)obj WithObjDict:(NSDictionary *)dict {
u_int count = 0;
//存儲(chǔ)成員變量名稱的數(shù)組
NSMutableArray *propertyArray = [NSMutableArray array];
//獲取控制器的成員變量數(shù)組
objc_property_t *properties = class_copyPropertyList([obj class], &count);
__block BOOL isProperty;
for (int i = 0; i < count; i++) {
// 取出成員變量
objc_property_t property = properties[i];
// 成員變量名字
NSString *keyValue = [NSString stringWithFormat:@"%s",property_getName(property)];
[propertyArray addObject:keyValue];
}
//遍歷字典,判斷數(shù)組中有沒有該元素,有則YES宵喂,一旦一個(gè)沒有則返回NO
[dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
if ([propertyArray containsObject:key]) {
///有這個(gè)參
isProperty = YES;
}else {
///沒有這個(gè)參
isProperty = NO;
return ;
}
}];
return isProperty;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者