Не можете получить доступ к свойствам возвращаемых объектов? - PullRequest
0 голосов
/ 29 августа 2011
//SomeObject.h
#import <Foundation/Foundation.h>


@interface SomeObject : NSObject {

}
@property NSInteger aProperty;
@end

//main.m

#import <Foundation/Foundation.h>
#import "SomeObject.h"

int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
    [dictionary setObject:[[[SomeObject alloc] init] autorelease] forKey:@"key1"];
    [dictionary setObject:[[[SomeObject alloc] init] autorelease] forKey:@"key2"];
    [dictionary objectForKey:@"key1"].aProperty = 5; //Error HERE
    [dictionary release];

    [pool drain];
    return 0;
}

Но в этой строке XCode выдает мне следующие ошибки:

error: Semantic Issue: Member reference type 'struct objc_object *' is a pointer; maybe you meant to use '->'?
error: Semantic Issue: No member named 'aProperty' in 'struct objc_object'

Не могу ли я получить доступ к свойству возвращенного объекта? (Я имею в виду, без непосредственного вызова метода установки)

1 Ответ

1 голос
/ 29 августа 2011

Вам необходимо привести приведенный объект:

((SomeObject*)[dictionary objectForKey:@"key1"]).aProperty = 5;

или

[(SomeObject*)[dictionary objectForKey:@"key1"] setAProperty: 5];

или

SomeObject* obj = [dictionary objectForKey:@"key1"];
obj.aProperty = 5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...