0

在我的项目中,我有一个 id 类型的对象。我正在为它设置不同的值。现在我需要检查它包含的值,并据此进行操作。

这是我的代码:

id *currentObject=nil;
-(void)setCurrentObject:(id *)object{
    currentObject=object;
}


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {


    if ( [elementName isEqualToString:@"apple"]) {
    [self setCurrentObject:apple];
    return;
    }
    else if ( [elementName isEqualToString:@"orange"]) {
    [self setCurrentObject:orange];
        return;
    }   

    [self readString];

}

-(void) readString{

//Here I need to check contents of 'currentObject'. If it contains 'apple' then print 'Its apple' else don't do anything
}

如何检查“id”类型的当前对象的内容?请帮忙。

4

3 回答 3

1

您可以通过使用获取对象的类名

NSStringFromClass

您可能想确定您的 ID 对象属于哪种类

id object;
NSDictionary *str = [NSString stringWithString:@"test string"];
object = str;
NSString *string = NSStringFromClass([object class]);
NSLog(@"object is class of : %@", string);

if ([object isKindOfClass:[NSString class]]) {
    NSLog(@"data string = %@",(NSString*)object);
}else if([object isKindOfClass:[NSDictionary class]]){
    NSLog(@"data dictionary = %@", (NSDictionary*)object);
}
于 2012-06-28T06:49:28.750 回答
0

要获取对象的类名,您可以使用

const char* className = class_getName([yourObject class]);

然后使用 utf8 字符串从上面的类名创建一个 nsstring,然后检查你想要什么。

于 2012-06-28T06:37:12.227 回答
0

如果您知道要存储哪种对象(“apple”或“orange”),为什么不直接创建 aNSString而不是id?不要忘记KISS 原则

于 2012-06-28T06:44:33.520 回答