英文:
Using SwiftUI Charts in macOS Foundation App
问题
I can certainly help with that. Here's the translated portion:
我有一个用Swift编写的Foundation macOS应用程序。我尝试在NSViewcontroller中使用SwiftUI Chart View(教程在此),但似乎import Charts
无法识别,我遇到了错误Cannot find 'Chart' in scope
和Cannot find 'LineMark' in scope
。
对于这个问题以及如何解决它有任何想法吗?
编辑1
我已将部署目标更改为macOS 13.0+,但仍然遇到相同的错误。
编辑2
我尝试了这个语法(在构造闭包内使用ForEach),但仍然遇到相同的错误。
var body: some View {
Chart {
ForEach(entries) { entry in
LineMark(x: .value("Time", entry.time),
y: .value("Temp", entry.temp))
.foregroundStyle(.red)
}
}
}
英文:
I have a Foundation macOS App written in Swift. I'm trying to use SwiftUI Chart View in NSViewcontroller (tutorial here) but it's seems import Charts
doesn't recognized and I obtain the error Cannot find 'Chart' in scope
and Cannot find 'LineMark' in scope
.
Any idea about the issue and how to resolve it ?
EDIT n.1
I've changed deployment target to macOS 13.0+ but still have the same error.
EDIT n.2
I've tried with this sintax (using foreach inside construction closure) but still have the same error.
var body: some View {
Chart {
ForEach(entries) { entry in
LineMark(x: .value("Time", entry.time),
y: .value("Temp", entry.temp))
.foregroundStyle(.red)
}
}
}
答案1
得分: 2
I understand your request. Here is the translated code part:
如果你的项目中是否使用了第三方库Charts?
这个库?https://github.com/danielgindi/Charts
如果是的话,解决方法是将Charts库重命名为DGCharts,他们已经在处理这个问题,但这个问题在这里有解释:
https://github.com/danielgindi/Charts/issues/4897
我的解决方案将是:
或者如果你使用cocoa pods,你可以使用
pod 'DGCharts', :git => 'https://github.com/danielgindi/Charts.git' , :branch => 'release/5.0.0'
英文:
Are you using Charts 3rd party library by any chance in your project?
This one? https://github.com/danielgindi/Charts
if so work around needs to be renaming Charts library to DGCharts, they are already working on it but this issue explains it
https://github.com/danielgindi/Charts/issues/4897
my solution would be:
or if you are using cocoa pods you can use
pod 'DGCharts', :git => 'https://github.com/danielgindi/Charts.git' , :branch => 'release/5.0.0'
答案2
得分: -1
I believe the user's last message contains a request for translation (not explicitly mentioned in the policy). Therefore, I'll provide the translated content without further information:
我认为用户的最后一条消息是请求翻译的内容,我将提供翻译后的文本,不包含其他信息。
英文:
I believe there may be a bug in Xcode.
I encountered the same issue as you did on my development environment (Ventura 13.0, Xcode 14.2, and Minimum Deployments macOS 13.0) on my first attempt. However, as I made various tweaks to the code to try to resolve the issue, the error suddenly vanished, and I was able to build without any problem. It was so weird.
There is a syntax that allows you to use Charts
in a manner similar to the ForEach syntax, as follows:
Chart(entries, id: \.temp) { entry in
...
...
}
I suspect that Xcode's inference capabilities are causing some unknown conflict with that constructor (or others).
Therefore, instead of using the syntax in your example, I would recommend using the syntax with id:
mentioned above, or the syntax utilizing ForEach
from the Apple tutorial (hopefully with a bug fix).
struct WeatherTemperature : Identifiable {
let id = UUID()
let temp: Double
let time: Int
}
struct ContentView : View {
let entries = [
WeatherTemperature(temp: 10, time: 1680622832),
WeatherTemperature(temp: 14, time: 1680622932)
]
var body : some View {
Chart {
ForEach(entries) { entry in
LineMark(x: .value("Time", entry.time),
y: .value("Temp", entry.temp))
.foregroundStyle(.red)
}
}
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论