我创建了一个新的TVML项目并启动它。第一个错误是App Transport Security,我通过Info.plist
修复:
App Transport Security Settings -> Allow Arbitrary Loads -> YES
然后我再次运行它,我收到此错误:
无法加载启动URL并显示错误:(null)appController(_:didFailWithError :)调用错误:错误Domain = TVMLKitErrorDomain Code = 3“(null)”
该项目似乎停在这里(application func
在AppDelegate.swift
):
appControllerContext.launchOptions["BASEURL"] = AppDelegate.tvBaseURL
print(launchOptions) //returns nil
//error on following line
if let launchOptions = launchOptions as? [String: AnyObject] {
//does not enter here
for (kind, value) in launchOptions {
appControllerContext.launchOptions[kind] = value
}
}
我试图将tvBaseURL从“http://localhost:9001/”改为http://MY-IP-ADDRESS-HERE:9001/
但这并没有改变任何事情。
导致此错误的原因是什么?如何解决?
您应该使用端口号启动服务器
在终端中输入以下命令
ruby -run -ehttpd . -p9001
最后你的tvBaseURL应该像这样导航到服务器文件夹
"http://yourLocalhost:9001/Downloads/TVMLCatalogUsingTVMLTemplates/Server/"
我也面临同样的问题,我通过改变AppDelegate中的tvBaseURL解决了这个问题
static let tvBaseURL = "http://127.0.0.1:9001/Downloads/TVMLCatalogUsingTVMLTemplates/Server/"
如您所见 - 我必须显示Server文件夹的确切路径。如果你把它放到一些Web服务器上也可以。
希望它可以帮助!
我刚遇到这个问题。您需要密切关注终端输出。
我有:
[2019-03-15 12:28:43] INFO WEBrick 1.3.1 [2019-03-15 12:28:43] INFO ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin17] /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/socket.rb:205: in `bind': Address already in use - bind(2) for 0.0.0.0:9001 (Errno::EADDRINUSE)
地址已在使用 - bind(2)for 0.0.0.0:9001
此时你要么必须选择一个不同的端口号(如果你决定这样做,那么确保你的服务器的端口和你的Xcode的项目端口匹配)或者通过ctrl + c
杀死以前的服务器或者只是杀死那个终端窗口。
另请注意,在Apple的一些示例项目中,ruby -run -ehttpd . -p9001
命令将在名为Server的文件夹中完成,而对于其他项目,它只是假设在App的主文件夹中完成。只需查看README文件就可以解决这个问题。