2015-02-17 2 views
1

До единого API, я использовал этот код для разбора списка друзей на Facebook:Анализировать Facebook друзей

var list = new List<FacebookFriend>(); 
var graphObject = result as FBGraphObject; 

using (var array = (NSMutableArray)graphObject[new NSString("data")]) 
{ 
    for (uint i = 0; i < array.Count; i++) 
    { 
     using (var friend = new NSDictionary(array.ValueAt (i))) 
     { 
      friends.Add (new FacebookFriend 
      { 
       ID = friend.ObjectForKey (new NSString ("uid")).ToString(), 
       Name = friend.ObjectForKey (new NSString ("name")).ToString(), 
      }); 
     } 
    } 
} 

FacebookFriends:

public class FacebookFriend 
    { 

     public string ID { get; set; } 
     public string name { get; set; } 

    } 

массив следующим образом:

массива {({id = 100009010208340; name = "Patricia Amijajbjhcdj Wongsky";}, {id = 100009036398265; name = "Patricia Amijcfcihbfe Vijayvergiyasen";}, {id = 100009086915834; name = "Elizabeth Amijhfiaehcd Bha rambesky "; })}

Но теперь уровень защиты NSDictionary изменился, и этот код сломался. Вместо этого я попытался использовать некоторые фабричные методы, но без успеха.

Кто-нибудь знает, что следует использовать в этом случае вместо

new NSDictionary(array.ValueAt (i))) 

Благодарности

ответ

0

Это должно быть как:

Runtime.GetNSObject<NSDictionary> (array.ValueAt (i));

примечание стороны: создание же NSString константы внутри цикла неэффективно. Вы должны сделать что-то вроде:

using (var uid = new NSString ("uid")) 
using (var name = new NSString ("name")) { 
    for (uint i = 0; i < array.Count; i++) { 
     using (var friend = Runtime.GetNSObject<NSDictionary> (array.ValueAt (i))) { 
     friends.Add (new FacebookFriend 
     { 
      ID = friend.ObjectForKey (uid).ToString(), 
      Name = friend.ObjectForKey (name).ToString(), 
     }); 
    } 
} 
0

I've составлен ответ и добавил получить, что может помочь кому-то, так как у меня ушло несколько дней, чтобы понять, как сделать этот запрос работы на едином API и SDK Facebook V2.2 в Xamarin IOS.

List<string> mUserFriendsList = new List<string>(); 
    if(FBSession.ActiveSession.IsOpen) 
        { 
         var dic = new NSDictionary(); 
         FBRequestConnection.StartWithGraphPath("me/friends?fields=id",dic,"GET",(connection,result,error) => 
         { 
          if(error != null){ 
           Console.WriteLine(error.Description); 
           InvokeOnMainThread (() => new UIAlertView ("Error!", "An error has occured while trying to connect to facebook. Please try again later.", null, "Ok", null).Show()); 
          }else{ 
           var graphObject = result as FBGraphObject; 
           using (var array = (NSMutableArray)graphObject[new NSString("data")]) 
           { 
            using(var id = new NSString("id")); 
            for (uint i = 0; i < array.Count; i++) 
            { 
             using (var friend = Runtime.GetNSObject<NSDictionary> (array.ValueAt (i))) 
             { 
              mUserFriend = friend["id"].ToString(); 
              mUserFriendsList.Add (mUserFriend); 
             } 
            } 
           } 
          } 
         }); 
        } 
Смежные вопросы