2017-02-10 4 views
0

У меня есть объективная функция c.Хотите преобразовать объективную функцию c в Xamarin iOS

(void)_refreshUserList { 
    [[VoiceMessageController sharedController].channelSwitcher.currentChannel fetchUsersWithCompletion:^(NSArray *users, NSError *error) { 

     NSMutableArray *newUsers = [[NSMutableArray alloc] init]; 

     [users enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
      [newUsers addObject:obj[kVLChannelUserInfoKeyUser]]; 
     }]; 
     if (error) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 

       UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Users Fetching Error" message:@"Can't fetch users" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
       [errorAlert show]; 
      }); 
     } else { 
      self.users = newUsers; 

      dispatch_async(dispatch_get_main_queue(), ^{ 
       [self.tableView reloadData]; 
      }); 
     } 





    }]; 

} 

мне нужно использовать эквивалентный Xamarin c# функцию.

Функция Я пытаюсь связать это:

(void)fetchUsersWithCompletion:(void (^)(NSArray *, NSError *))completionHandler; 

Я могу успешно преобразовать его в Xamarin c# метод, который это:

void FetchUsersWithCompletion(Action`<NSArray, NSError> `completionHandler); 

Теперь проблема я получаю выход как NSArray. Как преобразовать его в NSObject? Attached image of the NSArray output

ответ

0

Я вроде понял, это один

Это мой эквивалент C# код:

void FetchUsersCompletion(NSArray[] arg1, NSError arg2) 
     { 
      List<string> userIds = new List<string>(); 
      for (int i = 0; i < arg1.Length; i++) 
      { 
       var value = arg1[i].ValueForKey(LibraryVoiceLayer.Constants.kVLChannelUserInfoKeyUser) as VLUser; 
       userIds.Add(value.Name); 
      } 
      MessagingCenter.Send<ChannelPage, List<string>>(channelpage, "FetchUsers", userIds); 
     } 
Смежные вопросы