簡體   English   中英

使用alamofire json swift 3.0在我的標簽中打印.get

[英]print .get in my label using alamofire json swift 3.0

已有幾個星期了,我仍然在這里遇到這個問題。 我在和Api搭檔。 我對此很陌生,我真的需要幫助。 我已經完成了這些行。 唯一的任務是:從我的API獲取數據並將其發布在我的標簽中。 我正在使用4個文件/類。

用戶資料

import Foundation
import SwiftyJSON

class UserProfileWork: NSObject {

var workHistoryId = String()
var jobSeekerId = String()
var jobPosition = String()
var employer = String()
var workHistoryName = String()
var responsabilities = String()
var reasonForLeaving = String()
var currentPosition = Int()
var startMonth = String()
var startYear = String()
var endMonth = String()
var endYear = String()

init?(workDict: [String: JSON]){
    guard let workHistoryId = workDict["work_history_id"]?.string,
    let jobSeekerId = workDict["job_seeker_id"]?.string,
    let jobPosition = workDict["position"]?.string,
    let employer = workDict["employer"]?.string,
    let workHistoryName = workDict["work_history_name"]?.string,
    let responsabilities = workDict["responsibilities"]?.string,
    let reasonForLeaving = workDict["reason_for_leaving"]?.string,
    let currentPosition = workDict["is_current_position"]?.toInt,
    let startMonth = workDict["start_month"]?.string,
    let startYear = workDict["start_year"]?.string,
    let endMonth = workDict["end_month"]?.string,
    let endYear = workDict["end_year"]?.string else { return nil}

    self.workHistoryId = workHistoryId
    self.jobSeekerId = jobSeekerId
    self.jobPosition = jobPosition
    self.employer = employer
    self.workHistoryName = workHistoryName
    self.responsabilities = responsabilities
    self.reasonForLeaving = reasonForLeaving
    self.currentPosition = currentPosition
    self.startMonth = startMonth
    self.startYear = startYear
    self.endMonth = endMonth
    self.endYear = endYear
 }    
}

Api +用戶個人資料

 import Foundation
 import Alamofire
 import SwiftyJSON

extension API { 

class func userProfile(completion: @escaping(_ error: Error?, _ userProfile: [UserProfile]?) ->Void) {

    let url = URLs.jobSeekerTest90

    guard let api_token = helper.getApiToken() else {
        completion(nil, nil)
        return
    }

    let headers: HTTPHeaders = [
        "Authorization": "Bearer \(api_token)",
        "Accept": "application/json"
    ]

    let parameters = [
        "api_token": api_token
    ]

    Alamofire.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: headers)
    .responseJSON{ response in

        switch response.result{
            case .failure(let error):
                completion(error, nil)
                print(error)

            case .success(let value):
                let json = JSON(value)
                print(json)

            guard let dataDict = json["data"]["jobSeeker"].array else{
                completion(nil, nil)
                return
            }

            var userProfile = [UserProfile]()
            for data in dataDict {

                if let data = data.dictionary, let profileData = UserProfile.init(dict: data){

                userProfile.append(profileData)


            }
            completion(nil, userProfile)

        }
      }
    }
  }
}

還有我的視圖控制器(我以前有tableview,但是我決定只使用scrollView +標簽,因為我只需要顯示那些單一數據)

import UIKit
import Alamofire

class ProfileViewController: UIViewController{

@IBOutlet weak var leadingConstraint: NSLayoutConstraint!
@IBOutlet weak var menuView: UIView!

@IBOutlet weak var menuProfilePicture: UIImageView!
@IBOutlet weak var myAccountImageMenu: UIImageView!
@IBOutlet weak var switchProfileImageMenu: UIImageView!
@IBOutlet weak var signOutImageMenu: UIImageView!

//User profile
@IBOutlet weak var userProfilePicture: UIImageView!
@IBOutlet weak var userNameLabel: UILabel!
@IBOutlet weak var userNameJobPositionLabel: UILabel!

//quick facts
@IBOutlet weak var quickFactsLabel: UILabel!
@IBOutlet weak var userLocationImage: UIImageView!
@IBOutlet weak var userLocationLabel: UILabel!
@IBOutlet weak var userWorkExpImage: UIImageView!
@IBOutlet weak var userWorkExpLabel: UILabel!
@IBOutlet weak var educationImage: UIImageView!
@IBOutlet weak var educationLabel: UILabel!
@IBOutlet weak var infoImage: UIImageView!
@IBOutlet weak var infoAboutLabel: UILabel!

// most recent jobs
@IBOutlet weak var recentJobTitleLabel: UILabel!
@IBOutlet weak var userJobTitleLabel: UILabel!
@IBOutlet weak var companyNameLabel: UILabel!
@IBOutlet weak var startFinishLabel: UILabel!

//Education
@IBOutlet weak var highestEducLabel: UILabel!
@IBOutlet weak var programNameLabel: UILabel!
@IBOutlet weak var schoolNameLabel: UILabel!
@IBOutlet weak var startFinishEducLabel: UILabel!

var iconArray: [String]!

var userProfileData : [UserProfile] = []
var userProfileEducation : [UserProfileEducation] = []
var userProfileWork : [UserProfileWork] = []

var menuShowing = false

override func viewDidLoad() {
    super.viewDidLoad()

    iconArray = ["currentLocationIcon", "dataIcon", "educationIcon", "infiIcon"]

    leadingConstraint.constant = -520

    menuView.layer.shadowOpacity = 1
    menuView.layer.shadowRadius = 5

    menuProfilePicture.layer.cornerRadius = 35
    menuProfilePicture.clipsToBounds = true
    userProfilePicture.layer.cornerRadius = 55
    userProfilePicture.clipsToBounds = true

    handleRefresh()
    userData()
}

private func  userData(){



    self.userNameLabel.text = ""
    self.userNameJobPositionLabel.text = "Job Title"

    self.userLocationLabel.text = "User Location"
    self.userWorkExpLabel.text = "Work Experience"
    self.educationLabel.text = "Education"
    self.infoAboutLabel.text = "About me. More about me"

    self.userJobTitleLabel.text = "Job title again"
    self.companyNameLabel.text = "Company Name"
    self.startFinishLabel.text = "12 sep 2010 - 11 sep 2017"

    self.programNameLabel.text = "web and mobile app dev"
    self.schoolNameLabel.text = "school name"
    self.startFinishEducLabel.text = "finished at"
}


//reusable cells
private func handleRefresh(){
    API.userProfile { (error: Error?, userProfileData: [UserProfile]?) in
        if let userProfileData = userProfileData {
            self.userProfileData = userProfileData

        }
    }

    API.userEducation { (error: Error?, userEducation : [UserProfileEducation]?) in
        if let userEducation = userEducation {
            self.userProfileEducation = userEducation

        }
    }

    API.userWork { (error: Error?, userWork: [UserProfileWork]?) in
        if let userWork = userWork {
            self.userProfileWork = userWork

        }
    }
}

//Scroll hidden menu
@IBAction func scrollMenu(_ sender: Any) {
    if(menuShowing){
        leadingConstraint.constant = -520
        UIView.animate(withDuration: 0.5, animations: {
            self.view.layoutIfNeeded()
        })
    }else{
        leadingConstraint.constant = 0

        UIView.animate(withDuration: 0.5, animations: {
            self.view.layoutIfNeeded()
        })

    }

    menuShowing = !menuShowing

}

override func dismissKeyboard() {
    view.endEditing(true)
}


}   

我真的需要這些家伙的幫助。 請幫我!

我進行了一些更改,並且有效。

import UIKit
import SwiftyJSON

class UserProfile: NSObject{

var userID = String()
var JobSeekerId = String()
var userFstName = String()
var userLstName = String()
var userFullName = String()
var userJobTitle = String()
var userAbout = String()
var userLocation = String()
var userRecentSalary = String()
var userSalaryHiExpect = String()
var userSalaryLoExpect = String()
var userWebsiteUrl = String()
var userEmail = String()
var userMobile = String()


init?(dict: [String: Any]){

    guard let userID = dict["user_id"] as? String,
    let jobSeekerId = dict["job_seeker_id"] as? String,
    let userFstName = dict["first_name"] as? String,
    let userLstName = dict["last_name"] as? String,
    let userFullName = dict["job_seeker_name"] as? String,
    let userJobTitle = dict["personal_job_title"] as? String,
    let userAbout = dict["about"] as? String,
    let userLocation = dict["seekingLocations"] as? String,
    let userRecentSalary = dict["most_recent_salary"] as? String,
    let userSalaryHiExpect = dict["salary_expectation_high"] as? String,
    let userSalaryLoExpect = dict["salary_expectation_low"] as? String,
    let userWebsiteUrl = dict["website_url"] as? String,
    let userEmail = dict["contact_email"] as? String,
    let userMobile = dict["contact_mobile"] as? String else { return nil }

    self.userID = userID
    self.JobSeekerId = jobSeekerId
    self.userFstName = userFstName
    self.userLstName = userLstName
    self.userFullName = userFullName
    self.userJobTitle = userJobTitle
    self.userAbout = userAbout
    self.userLocation = userLocation
    self.userRecentSalary = userRecentSalary
    self.userSalaryHiExpect = userSalaryHiExpect
    self.userSalaryLoExpect = userSalaryLoExpect
    self.userWebsiteUrl = userWebsiteUrl
    self.userEmail = userEmail
    self.userMobile = userMobile
}
}

API + USERPROFILE

import Foundation
import Alamofire
import SwiftyJSON

extension API { 

class func userProfile(completion: @escaping(_ error: Error?, _ userProfile: UserProfile?) ->Void) {

    let url = URLs.jobSeekerTest90

    guard let api_token = helper.getApiToken() else {
        completion(nil, nil)
        return
    }

    let headers: HTTPHeaders = [
        "Authorization": "Bearer \(api_token)",
        "Accept": "application/json"
    ]

    let parameters = [
        "api_token": api_token
    ]

    Alamofire.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: headers)
    .responseJSON{ response in

        switch response.result{
            case .failure(let error):
                completion(error, nil)
                print(error)

            case .success(let value):
                let json = JSON(value)
                print(json)

            guard let dataDict = json["data"]["jobSeeker"].dictionaryObject else{
                completion(nil, nil)
                return
            }

            var userProfile = UserProfile(dict: dataDict)

            completion(nil, userProfile)

        }
    }
}
}

視圖控制器

import UIKit
import Alamofire

class ProfileViewController: UIViewController{

@IBOutlet weak var leadingConstraint: NSLayoutConstraint!
@IBOutlet weak var menuView: UIView!

@IBOutlet weak var menuProfilePicture: UIImageView!
@IBOutlet weak var menuProfileName: UILabel!
@IBOutlet weak var myProfileJobTitle: UILabel!

@IBOutlet weak var myAccountImageMenu: UIImageView!
@IBOutlet weak var switchProfileImageMenu: UIImageView!
@IBOutlet weak var signOutImageMenu: UIImageView!

//User profile
@IBOutlet weak var userProfilePicture: UIImageView!
@IBOutlet weak var userNameLabel: UILabel!
@IBOutlet weak var userNameJobPositionLabel: UILabel!

//quick facts
@IBOutlet weak var quickFactsLabel: UILabel!
@IBOutlet weak var userLocationImage: UIImageView!
@IBOutlet weak var userLocationLabel: UILabel!
@IBOutlet weak var userWorkExpImage: UIImageView!
@IBOutlet weak var userWorkExpLabel: UILabel!
@IBOutlet weak var educationImage: UIImageView!
@IBOutlet weak var educationLabel: UILabel!
@IBOutlet weak var infoImage: UIImageView!
@IBOutlet weak var infoAboutLabel: UILabel!

// most recent jobs
@IBOutlet weak var recentJobTitleLabel: UILabel!
@IBOutlet weak var userJobTitleLabel: UILabel!
@IBOutlet weak var companyNameLabel: UILabel!
@IBOutlet weak var startFinishLabel: UILabel!

//Education
@IBOutlet weak var highestEducLabel: UILabel!
@IBOutlet weak var programNameLabel: UILabel!
@IBOutlet weak var schoolNameLabel: UILabel!
@IBOutlet weak var startFinishEducLabel: UILabel!

var iconArray: [String]!

var userProfileData : [UserProfile] = []
var userProfileEducation : [UserProfileEducation] = []
var userProfileWork : [UserProfileWork] = []

var menuShowing = false

override func viewDidLoad() {
    super.viewDidLoad()

    iconArray = ["currentLocationIcon", "dataIcon", "educationIcon", "infiIcon"]


    leadingConstraint.constant = -520

    menuView.layer.shadowOpacity = 1
    menuView.layer.shadowRadius = 5

    menuProfilePicture.layer.cornerRadius = 35
    menuProfilePicture.clipsToBounds = true
    userProfilePicture.layer.cornerRadius = 55
    userProfilePicture.clipsToBounds = true


    userData()
    userWorkProfileData()
    userEducationProfileData()
}

private func  userData(){

    API.userProfile { (error: Error?, userProfileData: UserProfile?) in

        if let userProfileData = userProfileData {

            self.myProfileJobTitle.text = userProfileData.userFullName
            self.menuProfileName.text = userProfileData.userJobTitle
            self.userNameLabel.text = userProfileData.userFullName
            self.userNameJobPositionLabel.text = userProfileData.userJobTitle
            self.userLocationLabel.text = userProfileData.userLocation
            self.infoAboutLabel.text = userProfileData.userAbout
            self.userJobTitleLabel.text = userProfileData.userJobTitle
        }
    }
}

//Scroll hidden menu
@IBAction func scrollMenu(_ sender: Any) {
    if(menuShowing){
        leadingConstraint.constant = -520
        UIView.animate(withDuration: 0.5, animations: {
            self.view.layoutIfNeeded()
        })
    }else{
        leadingConstraint.constant = 0

        UIView.animate(withDuration: 0.5, animations: {
            self.view.layoutIfNeeded()
        })

    }

    menuShowing = !menuShowing

}

override func dismissKeyboard() {
    view.endEditing(true)
}


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM