GPS정보로 주소 출력하기

|

임포트

CLLocationManagerDelegate

흐름도

BC1EA550-BE0D-4545-92A6-6263E295A9FB

전체 코드

import UIKit
import CoreLocation

class ViewController: UIViewController ,  CLLocationManagerDelegate{
    var locationManager:CLLocationManager!
    
  
    @IBOutlet weak var addressLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        getLocationInfo()
    }
    
    
    func getLocationInfo(){
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()
        
        if CLLocationManager.locationServicesEnabled() {
            locationManager.startUpdatingLocation()
            //locationManager.startUpdatingHeading()
        }else{
            print("오..이런..gps.")
        }
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let location = manager.location else{
            return
        }
        let cor = location.coordinate
        printAddressBasedOnGPS(lati: cor.latitude , longi: cor.longitude)
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error)
    {
        print("Error \(error)")
    }
    
    @IBAction func actionSwitch(_ sender: UISwitch) {
        
        if sender.isOn {
            locationManager.startUpdatingLocation()
        }else{
            locationManager.stopUpdatingLocation()
        }
        
    }
}

// MARK: 로깅 부분
extension ViewController{
    func printAddressBasedOnGPS(lati:CLLocationDegrees, longi:CLLocationDegrees){
        let findLocation = CLLocation(latitude: lati, longitude: longi )
        let geocoder = CLGeocoder()
        let locale = Locale(identifier: "Ko-kr") //원하는 언어의 나라 코드를 넣어주시면 됩니다.
        
        geocoder.reverseGeocodeLocation(findLocation, preferredLocale: locale, completionHandler: {(placemarks, error) in
            
            
            if let address: [CLPlacemark] = placemarks {
                
                if let name: String = address.last?.name {
                    print(name , lati, address )
                    self.addressLabel.text = "\(name) :  gps\(lati)"
                    self.addressLabel.backgroundColor = UIColor.particle()
                }
                
                // refered to CLPlacemark 객체:
                // po address.last?.administrativeArea 경기도
                // po address.last?.locality 성남시
                // po address.last?.name     성남대로343번길
                // po address.last?.country  대한민국
                
                
            } }) 
         
    }
}

참고 사이트: http://devsc.tistory.com/82 [You Know Programing?]

ViewController 위에 ViewController 올리기.

|

ViewController 중첩하여 올리기

  1. 뷰를 올리기 621A7D0C-6A8F-4855-8BCA-98F4B7E08656

  2. 뷰 dismiss시 처리하기

0703808D-00DD-4CAB-8F46-2E99C5CDA7AA

  1. 전체 코드
///  ViewController위에 또 다른 ViewController 올리기
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let entryVc = storyboard.instantiateViewController(withIdentifier: storyNewEntry) as! MakeNewEntryViewController
add(entryVc)

entryVc.dismissHandler = {
    self.collectionView.reloadData()
    entryVc.remove()
}

필요한 Extension은 다음과 같습니다.


extension UIViewController {
    func add(_ childVC: UIViewController) {
        addChild(childVC)
        self.view.addSubview(childVC.view)
        childVC.didMove(toParent: self)
    }
    
    func remove() {
        guard self.parent != nil else {
            return
        }
        willMove(toParent: nil)
        removeFromParent()
        self.view.removeFromSuperview()
    }
}

UserDefaults 객체 제거

|

기존에 사용하던 UserDefault객체중 하나를 제거하고 싶다면.

UserDefaults.standard.removeObject(forKey: "helloWorldStringKey")

전체 UserDefault객체 목록을 모두 보고 싶다면

 for (key, value) in UserDefaults.standard.dictionaryRepresentation() {
   print("\(key) = \(value) \n")
 }

또는

_=UserDefaults.standard.dictionaryRepresentation().map {print("[UserDefaults_CleandUp]:\($0.key): \($0.value)")}

또는


UserDefaults.standard.dictionaryRepresentation().forEach{ print("[UserDefaults_CleandUp]:\($0.key): \($0.value)") }

Git pullRequest 하기 (터미널)

|

[죄송합니다. 편집중인 문서입니다.]

먼저 새로운 브랜치를 만들고 체크아웃을 동시에 합니다. -b명령어를 사용합니다.

git:(release/develop) $ git checkout -b helloBranch

작업하고

git:(helloBranch) $ git status
git:(helloBranch) $ git add .
git:(helloBranch) $ git commit -m "done xoxo something"

이후에 서버로 푸시합니다.

git:(helloBranch) $ git push origin helloBranch

푸시하면 다음과 비슷한 결과가 출력됩니다.

Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1.08 KiB | 1.08 MiB/s, done.
Total 11 (delta 9), reused 0 (delta 0)
remote:
remote: Create pull request for helloBranch:
remote:   https://mygit.xxxx.com/projects/repos/dep-ios-app/compare/commits?sourceBranch=refs/heads/helloBranch
remote:
To https://mygit.xxxx.com/scm/depdev/dep-ios-app.git
 * [new branch]        helloBranch -> helloBranch
 

이제 helloBranchrelease/develop로 머지시켜야 합니다. 이 작업은 ….

…추가로 작업예정.

생산적인 사람이 하는 50가지 중

|

생산적인 사람이 하는 50가지 중에 몇가지만 뽑아 본다.

1. 휴식
2. 타이머 사용
3. 온갖간섭에서 탈출( Ditraction Free )
4. 일단 시작하기
5. 컴퓨터에서 멀어지기...헉..
6. 충분한 **잠**
7. 운동하기
8. 책상 정리하기
9. 샤워 짧게 하기 - 이건 **휴식**과 좀 상반됨.
10. exciting 한 목표를 설정하기

원본은 아래 링크를 참조한다.