2013-11-14 113 views
0

我目前正在構建一個社交媒體應用程序,允許用戶通過Facebook註冊。我的註冊過程正常,但我想要做的一件事就是請求用戶城市和州,並將它們作爲單獨的密鑰存儲在我的數據庫中。這樣我可以允許用戶在我的應用程序中按城市或州搜索用戶。分別存儲Facebook用戶的城市和國家

我已經設置FBRequestConnection方法並將用戶位置作爲一個整體。

是否可以查詢城市和州並分別存儲它們?如果是這樣,有什麼建議?

在此先感謝!

+0

你能告訴你的代碼,你現在是如何做這個?我假設你正在使用'[FBRequest requestForMe]'獲取用戶的FBGraphUser。 FBGraphUser有一個位置屬性,它是一個FBGraphPlace。 FBGraphPlace具有一個位置屬性,它是一個FBGraphLocation。 FBGraphLocation具有城市,國家,州等的字符串和數字屬性。您現在正在做什麼來獲取位置? – Alex

+0

是的,我正在使用[FBRequestrequestForMe]。然後,我通過以下代碼獲取用戶位置: if([result objectForKey:@「location」]){ NSString * facebookLocation = [[result objectForKey:@「location」] objectForKey:@「name」]; [[PFUser currentUser] setObject:facebookLocation forKey:@「location」]; } –

+0

會有更好的方式提取用戶位置信息嗎? –

回答

1

從評論你現在這樣做:

[FBRequestrequestForMe] 

然後:

if ([result objectForKey:@"location"]) { 
    NSString *facebookLocation = [[result objectForKey:@"location"] objectForKey:@"name"]; 
    [[PFUser currentUser] setObject:facebookLocation forKey:@"location"]; 
} 

resultFBGraphUser對象和要訪問的location屬性是一個FBGraphPlace對象:

https://developers.facebook.com/docs/reference/ios/current/protocol/FBGraphPlace

您正在訪問FBGraphPlacename屬性,該屬性將爲您提供該地點的NSString表示形式。你想要做的是訪問location屬性,它是一個FBGraphLocation。這個對象的各種組件的屬性你想要的:

https://developers.facebook.com/docs/reference/ios/current/protocol/FBGraphLocation

(我不是在Mac上,現在,所以有可能在這段代碼中的一些錯誤),你應該能夠做這樣的事:

id<FBGraphUser> fbUser = (id<FBGraphUser>)result; 
id<FBGraphPlace> fbPlace = [fbUser location]; 
id<FBGraphLocation> fbLocation = [fbPlace location]; 
NSString * userCity = [fbLocation city]; 
NSString * userCountry = [fbLocation country]; 
NSString * userZip = [fbLocation zip]; 
//etc 

然後,您可以使用這些信息,但是你會用你的分析用戶喜歡:

[[PFUser currentUser] setObject:userCity forKey:@"city"]; 
[[PFUser currentUser] setObject:userZip forKey:@"zip"]; 
+0

這太棒了!太感謝了! –

+0

IT無法使用。 – Xeieshan