簡體   English   中英

將所有對象屬性放入NSDictionary或NSArray中

[英]Put all object properties into an NSDictionary or NSArray

有沒有辦法自動返回類中所有(公共)屬性的NSDictionary? 您可以假設所有屬性都是屬性列表,並且我不想只是將指針移交給類本身。 任何現有的魔法可以解決這個問題?

我知道我可以延遲實例化NSDictionary並在getter中手動用屬性填充它。

使用Objective-C運行時中的class_copyPropertyListproperty_getName函數很容易獲得聲明屬性的數組。 這是一個這樣的實現:

- (NSArray *)properties
{
    NSMutableArray *propList = [NSMutableArray array];
    unsigned int numProps = 0;
    unsigned int i = 0;

    objc_property_t *props = class_copyPropertyList([TestClass class], &numProps);
    for (i = 0; i < numProps; i++) {
        NSString *prop = [NSString stringWithUTF8String:property_getName(props[i])];
        [propList addObject:prop];
    }

    return [[propList copy] autorelease];
}

您可以將此作為NSObject類別中的方法添加。 這是一個完整的代碼清單 ,可以編譯來演示這一點。

我不確定你是怎么用NSDictionary做的,只是因為我不確定你對鍵值對的期望是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM