

swiftについての質問です。  
今回、CoreMotionフレームワークを用いて加速度センサーの値を取り出そうと以下のサイトのコードを書いてみたのですが、import
CoreMotionの箇所で以下の警告文がでてインポートできません。

> File 'ViewController.swift is part of module 'CoreMotion';ignoring import'.

参考サイト  
<https://sites.google.com/a/gclue.jp/swift-docs/ni-
yinki100-ios/5-coremotion/001-jia-su-dusensano-zhiwo-qu-de>

ちなみにCoreMotion.frameworkはLinked Frameworks and Librariesから追加しました。  
そして、そのコードを一応以下に記載しておきます。

[code]

    import UIKit
    import CoreMotion
    
    class ViewController: UIViewController {
    
        var myMotionManager: CMMotionManager!
    
        override func viewDidLoad() {
    
            super.viewDidLoad()
    
            // Labelを作成.
            let myXLabel: UILabel = UILabel(frame: CGRectMake(0,0,200,50))
            myXLabel.backgroundColor = UIColor.blueColor()
            myXLabel.layer.masksToBounds = true
            myXLabel.layer.cornerRadius = 10.0
            myXLabel.textColor = UIColor.whiteColor()
            myXLabel.shadowColor = UIColor.grayColor()
            myXLabel.textAlignment = NSTextAlignment.Center
            myXLabel.layer.position = CGPoint(x: self.view.bounds.width/2,y: 200)
    
            let myYLabel: UILabel = UILabel(frame: CGRectMake(0,0,200,50))
            myYLabel.backgroundColor = UIColor.orangeColor()
            myYLabel.layer.masksToBounds = true
            myYLabel.layer.cornerRadius = 10.0
            myYLabel.textColor = UIColor.whiteColor()
            myYLabel.shadowColor = UIColor.grayColor()
            myYLabel.textAlignment = NSTextAlignment.Center
            myYLabel.layer.position = CGPoint(x: self.view.bounds.width/2,y: 280)
    
            let myZLabel: UILabel = UILabel(frame: CGRectMake(0,0,200,50))
            myZLabel.backgroundColor = UIColor.redColor()
            myZLabel.layer.masksToBounds = true
            myZLabel.layer.cornerRadius = 10.0
            myZLabel.textColor = UIColor.whiteColor()
            myZLabel.shadowColor = UIColor.grayColor()
            myZLabel.textAlignment = NSTextAlignment.Center
            myZLabel.layer.position = CGPoint(x: self.view.bounds.width/2,y: 360)
    
            // Viewの背景色を青にする.
            self.view.backgroundColor = UIColor.cyanColor()
    
            // ViewにLabelを追加.
            self.view.addSubview(myXLabel)
            self.view.addSubview(myYLabel)
            self.view.addSubview(myZLabel)
    
            // MotionManagerを生成.
            myMotionManager = CMMotionManager()
    
            // 更新周期を設定.
            myMotionManager.accelerometerUpdateInterval = 0.1
    
            // 加速度の取得を開始.
            myMotionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {(accelerometerData:CMAccelerometerData!, error:NSError!) -> Void in
                myXLabel.text = "x=\(accelerometerData.acceleration.x)"
                myYLabel.text = "y=\(accelerometerData.acceleration.y)"
                myZLabel.text = "z=\(accelerometerData.acceleration.z)"
            })
    
        }
    
    }
    
[/code]


CC BY-SA 3.0
2016-02-09T01:43:26.943
21869
2016-02-09T12:15:16.777
2016-02-09T02:51:31.167
3068
14336
question
ios swift
swiftでCoreMotionのインポートが無視される


Xcode 7.2.1でSingle View
Applicationからプロジェクトを作成、質問文にあるコードを貼り付けてそのままコンパイルしてみましたが、import
CoreMotionの箇所ではエラーは出ませんでした。 **※frameworkを追加する作業は行っていません**

そちらの環境でエラーが出る理由ですが、追加するフレームワークがおかしくなっているのが原因かと思われます。Linked Frameworks and
Librariesから一度すべてのフレームワークを削除して、それからビルドしてみてはどうでしょうか？

本題とは離れますが、質問文のコードをそのままコンパイルすると加速度の取得を開始する部分でコンパイルエラーが発生します。

この部分を修正すると、こんな感じになります。

[code]

        // 加速度の取得を開始.
        // Optionalの扱いを修正など
        myMotionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { (accelerometerData: CMAccelerometerData?, error: NSError?) in
            if let accelerometerData = accelerometerData {
                myXLabel.text = "x=\(accelerometerData.acceleration.x)"
                myYLabel.text = "y=\(accelerometerData.acceleration.y)"
                myZLabel.text = "z=\(accelerometerData.acceleration.z)"
            }
        }
    
[/code]


CC BY-SA 3.0
2016-02-09T09:36:41.810
21899
2016-02-09T09:36:41.810
7459
21869
answer


**新しいプロジェクトをCoreMotionという名前で作成** して、`import
CoreMotion`を記述したところで、ご質問に書かれた警告メッセージが表示されました。Swiftではプロジェクト名を一種のフレームワーク名のように扱いますので、CoreMotionは作成したプロジェクト自体を表すことになってしまいます。

もし上記に該当するのでしたら、別の名前(MyCoreMotionとか)でプロジェクトを作成した後、同じコードを貼り付けて試してみてください。


CC BY-SA 3.0
2016-02-09T12:15:16.777
21908
2016-02-09T12:15:16.777
13972
21869
answer