gpt4 book ai didi

objective-c - 从 Cocoa 命令行工具打开具有特定坐标的 OS X Apple map

转载 作者:行者123 更新时间:2023-12-03 17:33:43 25 4
gpt4 key购买 nike

我正在尝试启动 native map 应用程序并通过命令行工具在 OS X 中显示特定坐标。

我找到了三个选项:

  • 使用[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
  • 使用 open 命令并传递格式化的 URL,然后让系统自行计算。
  • 使用 NSTask 通过 URL 启动 Maps.app。

我尝试了第一个:

NSString *url = [NSString stringWithFormat:@"http://maps.apple.com/?q=%@&ll=%f,%f", user[@"realName"], geo.latitude, geo.longitude];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];

(产生完全有效的字符串)

但是这不起作用。它只是什么都不做。没有打开任何内容,没有错误,没有警告。然后我选择了第二个选项。我不知道如何执行第二个操作,因此我转向了 NSTask。我找到了这个答案:https://stackoverflow.com/a/412573/811405 并且我已将此 URL 作为参数传递:http://maps.apple.com/?q=Example&ll=12.345,23.456 但我得到:

enter image description here

如何从 Cocoa 命令行工具打开具有特定点的 map ?

最佳答案

显然,您的 URL 字符串无效,因为其中包含空格。因此,[NSURL URLWithString:url] 返回nil

不要使用字符串格式来构建 URL。不要构建可能无效的 URL 字符串,然后尝试通过调用 -stringByAddingPercentEscapesUsingEncoding: 来修复它。您无法正确对整个 URL 字符串进行百分比转义编码。每个组件都有不同的需要转义的有效/无效字符。

最好的方法是使用 NSURLComponents 从各个部分构建 URL。

如果您不能这样做,请在 URL 的每个组件上使用 -stringByAddingPercentEncodingWithAllowedCharacters:,然后再将它们连接在一起。对于查询组件,您将使用 URLQueryAllowedCharacterSet

关于objective-c - 从 Cocoa 命令行工具打开具有特定坐标的 OS X Apple map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31897125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com