iOS

こんにちは! Objective-CよりSwiftはだいぶ書きやすいですね!storyboardも直感的でとてもいい感じです。

さて、本題ですが、CoreLocationで位置情報を取得しようとしたのですが、なかなか確認のアラートが出てくれない。 色々詰まりに詰まった結果、こうやれば出来たよ!ってのを書きたいと思います。

まずはコードとしてはこんな感じ

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {
  var locationManager: CLLocationManager!

  override func viewDidLoad() {
    super.viewDidLoad()

    self.locationManager = CLLocationManager()
    self.locationManager.delegate = self

    let status = CLLocationManager.authorizationStatus()

    // 認証が得られていない場合認証ダイアログを表示
    if(status == CLAuthorizationStatus.NotDetermined) {
      self.lm.requestWhenInUseAuthorization()
    }

    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager.distanceFilter = 300

    self.locationManager.startUpdatingLocation()
  }

  // 位置情報取得成功
  func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!) {

    NSLog("緯度:\(newLocation.coordinate.latitude) 経度:\(newLocation.coordinate.longitude)")
  }

  // 位置情報取得失敗
  func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
    NSLog("\(error)")
  }
}

これでいけるはずなんですが、なぜかいかない。実機テストでも位置情報が取得出来ない。 iOS側で設定しなきゃいけないのか?と思って設定から位置情報をオンにしても動かない。 なぜだーーー!と思って検索してたら、iOS8からはinfo.plistに使う理由を書かないとダメだよ!っていうstackoverflowを見つけました!

Location Services not working in iOS 8

ということで、info.plistを開いて言われた通りに書きましょう。

NSLocationWhenInUseUsageDescription
このアプリは位置情報を使ったアプリです
NSLocationAlwaysUsageDescription
このアプリは位置情報を常に使うアプリです

先ほどのコードの場合だとNSLocationWhenInUseUsageDescriptionだけで十分ぽいですが、ついでなので両方追加しておきました! これで動いた!!

少しでも約に立てれればFacebookページにいいねしていただけると嬉しいです!!

詳解 Swift
詳解 Swift
posted with amazlet at 14.12.07
荻原 剛志
SBクリエイティブ
売り上げランキング: 1,523
Read more

タイトルの通りですが、CocoaPodsで pod setupしたあとにpod installしようとすると

$ pod install Analyzing dependencies [!] An error occurred while performing `git pull` on repo `master`. [!] /usr/bin/git pull –ff-only fatal: You cannot combine –no-ff with –ff-only.

というエラーが発生する。 エラーメッセージからも分かる通り、–no-ff–ff-onlyは共存出来ないため、–no-ffをtrueにしてあげると解決する

$ git config --global merge.ff true

これで解決。globalで管理するのがダメなのかなぁ。

iOS開発におけるパターンによるオートマティズム
木下 誠
ビー・エヌ・エヌ新社
売り上げランキング: 20,619
Read more