Я хочу установить произвольный ключ: значение свойства на UIView - PullRequest
2 голосов
/ 22 января 2012

Для моей программы на iOS я хочу установить произвольное свойство key: value в UIView. Я не мог найти способ сделать это. Есть идеи?

Ответы [ 3 ]

7 голосов
/ 13 июня 2012

Слои соответствуют значению ключа, в соответствии с https://stackoverflow.com/a/400251/264619 (идти вверх, чтобы ответить на этот вопрос), так что вы можете вместо этого установить значения key: в слоях представления.

UIView *myView = [[UIView alloc] init];
[myView.layer setValue: @"hello" forKey: @"world"];
3 голосов
/ 22 января 2012

Прикрепите NSMutableDictionary к UIView, используя objc_setAssociatedObject.

http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAssociativeReferences.html

2 голосов
/ 22 января 2012

Обычный подход заключается в использовании адреса памяти получателя в качестве ключа в словаре и установке последующих встроенных словарей для этих ключей:

#define KEY(o) [NSString stringWithFormat:@"%x", o]

- (id) init
{
    if ((self = [super init])
    {
        // other stuff
        NSMutableDictionary *globalKeys = [NSMutableDictionary new]; // don't forget to release in dealloc
    }
    return self;
}

// and where you want to set a key-value pair:
- (void) addKey:(NSString *)key value:(id)value forObject:(id)obj
{
    NSString *objKey = KEY(obj);
    NSDictionary *objDict = [globalKeys objectForKey:objKey];
    if (!objDict)
    {
        [globalKeys setObject:[NSMutableDictionary dictionary] forKey:objKey];
    }
    [objDict setValue:value forKey:key];
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...