Получить свойства объекта "id" iphone - PullRequest
0 голосов
/ 01 июля 2010

Я столкнулся с некоторыми трудностями при получении свойств объекта типа "id". Вот как я к нему обращаюсь:

Я делаю следующее, чтобы назначить объект объекту типа id из универсального массива, содержащего различные типы объектов, и вызываю метод «saveata», которому я передаю объект, а также его тип:

for(id objInArray in genericArray){
    NSString *objType = [objInArray valueForKey:@"type"];
    [objInArray retain];
    [self saveData:objInArray :objType];
}

В методе сохраненных данных я пишу следующий код для получения свойств объекта id:

-(void)saveData:(id)object :(NSString *)objectType
{
self.managedObjectContext = appDelegate.managedObjectContext;

if([objectType isEqualToString:@"event"])
{
    Event * newEvent = (Event *)[NSEntityDescription 
                                 insertNewObjectForEntityForName:@"Event" 
                                 inManagedObjectContext:self.managedObjectContext];


    [newEvent setEletitle:[NSString stringWithFormat:@"%@", [object valueForKey:@"eletitle"]]]; 

    [self saveAction];
}

Но объект «объект», содержащий значения, не может присвоить их объекту newEvent. Я также попытался получить это значение в строковом объекте, например так:

NSString *eletit = [object valueForKey:@"eletitle"];
    [eletit retain];

Но eletit также недействителен в конце этой транзакции.

Кто-нибудь может помочь? Это действительно срочно.

Спасибо заранее.

1 Ответ

0 голосов
/ 01 июля 2010

К сожалению, вы не отвечаете, но у меня мало комментариев к вашему коду. Вы уверены, что это нормально, что в вашем массиве есть объект generics? Это странно, потому что весь ваш объект, содержащийся в вашем массиве, должен отвечать на сообщения «type» или «eletitle», поэтому я думаю, что objInArray менее универсален, чем просто «id».

Во-вторых, не рекомендуется иметь селектор типа saveData ::, в Objective-C это обычно и рекомендуется называть аргументы, это более понятно.

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