保存 api Facebook 数据以在不同的 ViewController swift iOS 中使用
Posted
技术标签:
【中文标题】保存 api Facebook 数据以在不同的 ViewController swift iOS 中使用【英文标题】:Saving api Facebook data for use in different ViewController swift iOS 【发布时间】:2016-07-08 22:10:14 【问题描述】:当用户登录时,我正在点击 Facebook 的图表以提取基本用户信息。我的问题是我如何使用 swift 以最佳方式保存/提取该信息,以便之后它在子视图控制器中持续存在(基本上所有登录后)。例如,我想在我的登录视图控制器中的登录屏幕(不在其中)之后,在整个应用程序中使用个人资料图片作为设置按钮,我有以下相关代码:
let userImageView: UIImageView =
let imageView = UIImageView()
return imageView
()
let nameLabel: UILabel =
let label = UILabel()
return label
()
然后:
func fetchProfile()
let parameters = ["fields": "email, first_name, last_name, picture.type(large)"]
FBSDKGraphRequest(graphpath: "me", parameters: parameters).startWithCompletionHandler( (connection, user, requestError) -> Void in
if requestError != nil
print(requestError)
return
var _ = user["email"] as? String
let firstName = user["first_name"] as? String
let lastName = user["last_name"] as? String
self.nameLabel.text = "\(firstName!) \(lastName!)"
var pictureUrl = ""
if let picture = user["picture"] as? NSDictionary, data = picture["data"] as? NSDictionary, url = data["url"] as? String
pictureUrl = url
let url = NSURL(string: pictureUrl)
NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: (data, response, error) -> Void in
if error != nil
print(error)
return
let image = UIImage(data: data!)
dispatch_async(dispatch_get_main_queue(), () -> Void in
self.userImageView.image = image
)
).resume()
)
我需要做什么才能在我的第二个 ViewController 中访问它?据我所知,segues 只有在我在第一个 viewController 中有一个物理属性来推送它们时才有帮助。
谢谢
【问题讨论】:
【参考方案1】:保存图像的最佳方式是使用 Documents Directory,因为 Core Data 并未针对像图像一样大的文件进行优化。您可能希望将照片保存在 Documents Directory 中......
func saveImageDocumentDirectory()
let fileManager = NSFileManager.defaultManager()
let paths = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent(*** Name of DocDir Image***)
let image = // *** Your Facebook Image ***
print(paths)
let imageData = UIImageJPEGRepresentation(image!, 0.5)
fileManager.createFileAtPath(paths as String, contents: imageData, attributes: nil)
然后在您的视图控制器中创建一个空的公共图像var fbImage:UIImage()
然后创建一个 getImage 函数和代码如下.....
func getImage()
let fileManager = NSFileManager.defaultManager()
let imagePAth = (self.getDirectoryPath() as NSString).stringByAppendingPathComponent(*** Name of Your DocDir Image ***)
if fileManager.fileExistsAtPath(imagePath)
self.fbImage.image = UIImage(contentsOfFile: imagePath)
else
print("No Image Saved")
【讨论】:
以上是关于保存 api Facebook 数据以在不同的 ViewController swift iOS 中使用的主要内容,如果未能解决你的问题,请参考以下文章
在图形 api 调用期间无法将 facebook 提升对象字段添加到活动中以在 facebook 上发布广告
XMPP Android - 构建客户端以在 facebook 上聊天或 facebook 聊天集成
使用 API 获取 Facebook 头像并将其保存到项目文件夹
Facebook Graph API 2.5 - 无法访问好友