2017-02-14 4 views
0

Работа с WatchOS:Как использовать [self pushControllerWithName: xxx context: NSdictionary]?

В InterfaceContoller.m «s (void)session .... didReceiveMessage ...

NSDictionary *request = @{@"testkey":@"testvalue"}; 
//i've also tried context:[NSNumber numberWithInt:1] 
[self pushControllerWithName:@"Controller" context:request]; 

В Controller.m-х -(void)awakeWithContext:(id)context

[super awakeWithContext:context]; 

NSLog(@"context = %@", context); 

я получил context = <InterfaceController: 0x14d80a30> вместо NSObject я поставил.

Что я хотел сделать, передать значение во время метода pushController, а Controller.m проверит значение и выполнит разную базу действий для значения. Как это достичь?

ответ

0

Извините, ребята, это была ошибка на моем конце.

Я получил этот ответ, потому что я поставил context:self, и я использовал этот код вместо NSDictionary, указанного в вопросе.

В качестве альтернативы, поскольку context является идентификатором, мы можем проверить идентификатор класса мы хотим (NSDictionary, NSString, NSNumber и т.д.), делая так:

if ([context isKindOfClass:[NSDictionary class]]) 
//[NSDictionary class] to check for NSDictionary. Use NSString, NSNumber for the one you need etc 
{ 
    NSDictionary* dict = (NSDictionary*)context; 
    NSLog(@"context dict = %@", dict); 
} 

Глупый меня!

Код: Objective C - How to Stringify an id

Смежные вопросы