0

私のプロジェクトでは、タイプ ID のオブジェクトが 1 つあります。私はそれに異なる値を設定しています。次に、どの値が含まれているかを確認する必要があり、それに応じて操作を行う必要があります。

これは私のコードです:

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

格納するオブジェクトの種類 (「リンゴ」または「オレンジ」) がわかっている場合は、 のNSString代わりに を作成してみませんidか? KISSの原則を忘れないでください。

于 2012-06-28T06:44:33.520 に答える
0

オブジェクトのクラス名を取得するには、使用できます

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

次に、utf8 文字列を使用して上記のクラス名から nsstring を作成し、必要なものを確認します。

于 2012-06-28T06:37:12.227 に答える