質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2140閲覧

折れ線グラフ作成によるエラー

PYPP

総合スコア51

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/11/05 14:36

###前提・実現したいこと
CorePlotを用いて、折れ線グラフを作成しようとしています。そこで、下記のようにコードを打ったらエラーが出てしまいました。これは、ソースコードをコピーアンドペーストしたものです。

###発生している問題・エラーメッセージ

Cannot assign value of type 'CorePlotViewController' to type 'CPTPlotDataSource'

dataSourceLinePlot.dataSource = selfの箇所でエラーが出ています。

###該当のソースコード

Swift

1import CorePlot 2import Foundation 3//import Cocoa 4//import UIKit 5 6 7class CorePlotViewController: UIViewController { 8 9 10 private let oneDay : Double = 24 * 60 * 60; 11 12 @IBOutlet var hostView : CPTGraphHostingView? = nil 13 14 private var graph : CPTXYGraph? = nil 15 16 private var plotData = [Double]() 17 18 // MARK: - Initialization 19 override func awakeFromNib() 20 { 21 self.plotData = newPlotData() 22 23 // If you make sure your dates are calculated at noon, you shouldn't have to 24 // worry about daylight savings. If you use midnight, you will have to adjust 25 // for daylight savings time. 26 let refDate = DateFormatter().date(from: "12:00 Oct 29, 2009") 27 28 // Create graph 29 let newGraph = CPTXYGraph(frame: .zero) 30 31 let theme = CPTTheme(named: .darkGradientTheme) 32 newGraph.apply(theme) 33 34 if let host = self.hostView { 35 host.hostedGraph = newGraph; 36 } 37 38 // Setup scatter plot space 39 let plotSpace = newGraph.defaultPlotSpace as! CPTXYPlotSpace 40 41 plotSpace.xRange = CPTPlotRange(location:0.0, length:NSNumber.init(value: oneDay * 5.0)) 42 plotSpace.yRange = CPTPlotRange(location:1.0, length:3.0) 43 44 // Axes 45 let axisSet = newGraph.axisSet as! CPTXYAxisSet 46 if let x = axisSet.xAxis { 47 x.majorIntervalLength = NSNumber.init(value: oneDay) 48 x.orthogonalPosition = 2.0 49 x.minorTicksPerInterval = 0; 50 let dateFormatter = DateFormatter() 51 dateFormatter.dateStyle = .short 52 let timeFormatter = CPTTimeFormatter(dateFormatter:dateFormatter) 53 timeFormatter.referenceDate = refDate; 54 x.labelFormatter = timeFormatter; 55 } 56 57 if let y = axisSet.yAxis { 58 y.majorIntervalLength = 0.5 59 y.minorTicksPerInterval = 5 60 y.orthogonalPosition = NSNumber.init(value: oneDay) 61 62 y.labelingPolicy = .none 63 } 64 65 // Create a plot that uses the data source method 66 let dataSourceLinePlot = CPTScatterPlot(frame: .zero) 67 dataSourceLinePlot.identifier = NSString.init(string: "Date Plot") 68 69 if let lineStyle = dataSourceLinePlot.dataLineStyle?.mutableCopy() as? CPTMutableLineStyle { 70 lineStyle.lineWidth = 3.0 71 lineStyle.lineColor = .green() 72 dataSourceLinePlot.dataLineStyle = lineStyle 73 } 74 75//エラー箇所 76 dataSourceLinePlot.dataSource = self 77 newGraph.add(dataSourceLinePlot) 78 79 self.graph = newGraph 80 } 81 82 func newPlotData() -> [Double] 83 { 84 var newData = [Double]() 85 86 for _ in 0 ..< 5 { 87 newData.append(1.2 * Double(arc4random()) / Double(UInt32.max) + 1.2) 88 } 89 90 return newData 91 } 92 93 // MARK: - Plot Data Source Methods 94 func numberOfRecords(for plot: CPTPlot) -> UInt { 95 return UInt(self.plotData.count) 96 } 97 98 func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any? 99 { 100 switch CPTScatterPlotField(rawValue: Int(field))! { 101 case .X: 102 return (oneDay * Double(record)) as NSNumber 103 104 case .Y: 105 return self.plotData[Int(record)] as NSNumber 106 } 107 } 108 109} 110

###試したこと
上記のソースコードと関連している、DataPlotのAppDelegateのコードを書き直したりなどしましたがダメでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

swift

1class CorePlotViewController: UIViewController,CPTPlotDataSource{

でどうでしょう

投稿2016/11/06 02:06

fromageblanc

総合スコア2724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PYPP

2016/11/06 04:18

エラーは出なくなりました!しかし、グラフは表示されない状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問