使用方法参数检查数组对象是否等于另一个字符串(objective-C)?
我都是自学成才,所以请尽量减少技术上的麻烦。理论上,如果我有一个方法,它有一个参数,它是数组的名称。如何检查数组索引5是否等于“是”或“否”。我知道这是其中之一,因为它正在测试图像是否出现在veiw控制器中。以下是一个例子:使用方法参数检查数组对象是否等于另一个字符串(objective-C)?,objective-c,arrays,methods,Objective C,Arrays,Methods,我都是自学成才,所以请尽量减少技术上的麻烦。理论上,如果我有一个方法,它有一个参数,它是数组的名称。如何检查数组索引5是否等于“是”或“否”。我知道这是其中之一,因为它正在测试图像是否出现在veiw控制器中。以下是一个例子: -(void)methodName :(NSMutableArray *)arrayNameInMethod { if ( [NSMutableArray *(arrayNameInMethod) indexOfObject:5] == @"Yes"){ //Hide
-(void)methodName :(NSMutableArray *)arrayNameInMethod {
if ( [NSMutableArray *(arrayNameInMethod) indexOfObject:5] == @"Yes"){
//Hide a different picture assocciated with the Array
} else {
//Unhide a different picture assocciated with the Array
};
另外,如何使用参数“ArrayNameMethod”替换对象。基本上:
if(Picture Clicked and picture is Unhidden) {
[NSMutableArray *(differentArrayNameInMethod) replaceObjectAtIndex:5 withObject: @"True)
};
(这都是另一种方法)
注释2:不能以相同的方式使用参数,因为它是一个字符串。无法访问名称为字符串的数组
非常感谢你 我认为您需要的是一个字典,将名称映射到数组。我将给出一个基本实现:
@interface YourClass()
{
NSMutableDictionary *_arrayMap;
}
@end
@interface YourClass
- (instancetype)init
{
self = [super init];
if (self) {
// You might do this somewhere else, like viewDidLoad:
_arrayMap = [NSMutableDictionary new];
}
return self;
}
- (void)someMethod
{
// Some functionality to add a new array:
// Note the array contains NSNumber and NSString objects:
_arrayMap[@"sampleName"] = [@[ @(0), @"one", @(2.0), @"three", @(4), @(YES)] mutableCopy];
}
-(BOOL)checkForConditionInArrayNamed:(NSString *)arrayName
{
BOOL retval = NO;
NSMutableArray *array = _arrayMap[arrayName];
if ([array count] > 5) {
id obj = array[5];
if ([obj isKindOfClass:[NSNumber class]])
retval = [obj boolValue];
}
return retval
};
@end
然后调用
checkForConditionInArrayNamed:
检查命名数组的条件并相应地执行操作。@“Yes”
和@“No”
不是布尔值,它们是字符串@YES
(无引号,全部大写)是一个NSNumber
包装布尔值YES
。方法参数与任何其他变量一样;您使用它的方式完全相同。但它不起作用。据我所知,我可以添加布尔值的唯一方法是使用Strings。您不能将任何NSObject
-派生类添加到数组中;最常见的是NSString
和NSNumber
。我回家后会检查一下。它不起作用,或者我做错了什么(可能是晚些时候)。这就是我所说的:NSMutableArray*Name=武器[weaponName];if([NSArray*Name indexOfObject:5]=@“True”);即使我已经准备好了NSDictionary*武器,这也没用。