2011-09-25 10 views
0

id 객체의 클래스를 비교하려고합니다. 그러나, 내가 시도하고 NSNumber의 클래스에 개체의 클래스를 비교하면, NSNumber에 몇 가지 변수를 설정 했음에도 동등한 것으로 등록되지 않습니다. 왜 등록하지 않는지 제발 알려주시겠습니까? 제 코드는 여기에 있습니다.id 비교가 올바르게 작동하지 않습니다.

NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
[dict setObject:n.title forKey:@"title"]; 
[dict setObject:[NSNumber numberWithBool:n.allDay] forKey:@"allDay"]; 
[dict setObject:[NSNumber numberWithInt:n.availability] forKey:@"availability"]; 
[dict setObject:[NSNumber numberWithInt:n.createdBy] forKey:@"createdBy"]; 
[dict setObject:n.endDate forKey:@"endDate"]; 
[dict setObject:n.location forKey:@"location"]; 
[dict setObject:n.notes forKey:@"notes"]; 
[dict setObject:n.ownerUsername forKey:@"ownerUsername"]; 
[dict setObject:n.startDate forKey:@"startDate"]; 
[dict setObject:[NSNumber numberWithInt:n.status] forKey:@"status"]; 
NSMutableString *json = [NSMutableString string]; 
[json appendString:@"{"]; 
for (NSString *key in [dict allKeys]) { 
    id obj = [dict objectForKey:key]; 
    if ([[dict allKeys] indexOfObject:key] == 0) { 
     if ([obj class] == [NSNumber class]) 
      [json appendFormat:@"\"%@\":%@", key, obj]; 
     else 
      [json appendFormat:@"\"%@\":\"%@\"", key, obj]; 
    } 
    else { 
     if ([obj class] == [NSNumber class]) 
      [json appendFormat:@",\"%@\":%@", key, obj]; 
     else 
      [json appendFormat:@",\"%@\":\"%@\"", key, obj]; 
    } 
} 
[json appendString:@"}"]; 

답변

0

사용 : 경우 :의 NSNumber 클러스터 클래스이기 때문에 ([isKindOfClass OBJ [의 NSNumber 클래스]])이 ...

0

이것은 당신의 NSNumber의 인스턴스를 만들 때, 당신은 실제로의 인스턴스를 가져 서브 클래스. ott는 isKindOfClass :를 사용해야한다고 말했다.

관련 문제