保存api Facebook数据,以便在不同的ViewController swift iOS中使用

时间:2016-07-08 22:10:15

标签: ios iphone swift facebook uiviewcontroller

当用户登录时,我正在点击Facebook的图表来提取基本用户信息。我的问题是如何使用swift以最佳方式保存/提取信息,以便它能够持续存在之后的子视图控制器(基本上是登录后的所有内容)。例如,我想在我的登录视图控制器中的登录屏幕(不在其中)之后使用配置文件pic作为整个应用程序中的设置按钮我有相关代码:

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中,我需要做什么才能访问它?根据我的理解,如果我在第一个viewController中有物理属性来推送它们,segues只会有帮助。

由于

1 个答案:

答案 0 :(得分:0)

保存图像的最佳方法是使用文档目录,因为核心数据未针对与图像一样大的文件进行优化。您可能希望将照片保存在文档目录中......

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)
    }

然后在你的viewcontroller中创建一个空的公共图像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")
            }
        }