代码之家  ›  专栏  ›  技术社区  ›  RickiG

在目标C类中构建“printme”方法?

  •  0
  • RickiG  · 技术社区  · 14 年前

    我有一些实体持有我的程序的价值。 例如,“人”实体已经为“名称”、“年龄”、“地址”等值合成了属性。

    我希望在实体上构建一个“printme”方法,以便调用此方法会导致将上述属性打印到控制台,如“\nPropertyName:Value”。

    我以前用过核心数据实体,方法如下:

    - (void) printMe {
    
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"NewAirline" inManagedObjectContext:[self managedObjectContext]];
    
    for (NSString *attr in [entity attributesByName]) {
        //[object setValue:@"n/a" forKey:attr];
    
        NSLog(@"%@:%@", attr, [self valueForKey:attr]);
    }
    NSLog(@"*************** end ***************\n");    
    

    }

    在这种情况下,我拥有的实体不是核心数据,我不能使用 attributesByName . 但它仍然应该符合关键价值,所以我想有一种方法可以解决这个问题。

    我的实体有20多个属性,我希望通过列出每个属性并在nslog中按名称调用它来避免手工操作。

    感谢您的帮助:)

    1 回复  |  直到 14 年前
        1
  •  1
  •   Max Seelemann    14 年前

    您可以使用Objective-C运行时API。函数 class_copyPropertyList 提供给定类的所有已声明属性。然后你可以使用更多的运行时函数,比如 property_getAttributes property_getName . 使用该名称,您可以以符合kvc的方式访问该值。

    推荐文章