我在Xcode 8中试验了Swift的文档注释,发现并非Markup Formatting Reference的每个功能都有效.特别是,我不能使seealso:标注工作,不能将图像URL插入我的文档注释.
这就是我的seealso:样子:
我使用了与这些网页上描述的完全相同的评论.
有没有人有同样的问题?有人知道解决方案吗?
有时我尝试从Xcode运行Vapor应用程序时会出现此错误.重新打开Xcode没有帮助,只重新启动系统.这是框架的错误吗?我该怎么做才能防止这种情况发生?
我尝试为UIView编写一个静态方法,它从nib实例化该类的视图.方法应该是通用的,并且适用于每个UIView子类.另外,我想保存类型信息 - 例如,在此代码中
let myView = MyView.loadFromNib()
Run Code Online (Sandbox Code Playgroud)
编译器推断出myView有MyView类.经过几次试验,我决定使用协议扩展,否则我将无法访问Self内部方法体.
看起来这应该工作:
protocol NibLoadable {
static func loadFromNib(name: String?) -> Self
}
extension NibLoadable where Self: UIView {
static func loadFromNib(name: String? = nil) -> Self {
let nibName = name ?? "\(self)"
let nib = UINib(nibName: nibName, bundle: nil)
return nib.instantiateWithOwner(nil, options: nil)[0] as! Self
}
}
extension UIView: NibLoadable {}
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.我收到编译错误
Method 'loadFromNib' in non-final class 'UIView' must return `Self` to conform to …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Swift和Vapor框架编写服务器端应用程序.但是,我无法弄清楚,如何使用Vapor提供静态文件.将它们移动到Publicor Resources目录是不够的.
我怎样才能做到这一点?
UPD. 我执行了Tanner Nelson建议的步骤,但它仍然无效.
到目前为止我尝试了什么:
vapor build和vapor run(使用Vapor Toolbox v.6.6).
./build/debug/App从根目录(包含Package.swift).
Tanner Nelson建议,在编辑方案后运行Xcode 8 beta.
在所有这些情况下我都会收到错误
{"error":true,"message":"Page not found"}
我有vapor_logo.png一个Public文件夹里面的文件,也有文件夹里面的Public/images/文件.我尝试请求它但它失败了.我提出的要求:http://localhost:8080/image/vapor_logo.png和http://localhost:8080/vapor_logo.png.但是,其他路线工作正常.
UPD 2.嗯,这就是我的错误.首先,我认为被调用的文件vapor_logo.png实际上被调用了vapor-logo.png.其次,当您提出请求时,案件很重要.我也尝试使用名称请求文件IMG_8235.JPG但写入文件扩展名为jpg,因此出错了.
所以,回顾一下:如果您遇到与我相同的问题,请遵循Tanner Nelson的回答,并确保所请求文件的名称与磁盘上的文件名完全匹配.
我和Carthage以及Cocoapods都有过一个项目.它们都有一个共同的依赖(PureLayout,确切地说).奇怪,但项目编译好,没有任何关于类重新声明等的错误.所以问题是:当我调用PureLayout的方法 - 迦太基或Cocoapods的方法时,它为什么工作以及实际使用了哪个版本的依赖?
我创建了一个源编辑器扩展,但不了解如何使用它.它在调试Xcode版本(带有灰色图标)时工作正常,但我找不到将此扩展安装到"真正的"Xcode的方法.文档对于这个主题来说非常模糊.我尝试过 - 1.构建并运行主机应用程序.2.将生成的.appex文件移动到Xcode的PlugIns目录中.没有什么对我有用.
我使用macOS Sierra和Xcode 8.
假设我们有写在斯威夫特2个框架:A.framework和B.framework,A要看B.我希望每个项目依赖于A能够访问框架的api B而无需import B在项目源文件中.如何实现?
编辑:特别是我很想知道如何通过Cocoapods完成这项工作.
另一个编辑:我认为如果我解释出现这个问题的背景会有所帮助,因为尽管它的持续时间和赏金,我仍然没有得到合适的答案.
所以,我有pod Freestyler(https://github.com/cayugasoft/Freestyler),它本身依赖于pod FreestylerCore(https://github.com/cayugasoft/FreestylerCore).工作正常,但import FreestylerCore即使import Freestyler完成,我也必须在项目中.它看起来有点烦人,因为我认为这个依赖(Freestyler -> FreestylerCore)作为实现细节,我想如果库的用户自动使这些东西工作而不导入除主pod之外的任何其他东西,Freestyler.所以,这就是我问这个问题的原因.有没有办法实现这个?
我正在尝试在XCode上运行Kitura项目.我尝试按照此页面上的说明进行操作([ https://github.com/IBM-Swift/Kitura/wiki/Building-your-Kitura-application-on-XCode]),但是我在第3步 - 运行时失败了swift build -X.我收到此错误:
error: unable to invoke subcommand: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
看起来我安装了最新的工具链(见下面的截图).
我也有XCode 7.3.1和XCode 8 beta.你有什么建议来解决这个问题?
在Swift中,我们可以在ObjC中没有很好的功能:可以在任何地方使用一个方法来使用闭包.但它可以导致保留周期.看看这个例子:
import Foundation
class C1 {
let closure: Void -> Void
init(closure: Void -> Void) {
self.closure = closure
}
deinit {
print("C1 deinit")
}
}
class C2 {
var c1: C1!
func initializeC1() {
c1 = C1(closure: f)
}
func f() {}
deinit {
print("C2 deinit")
}
}
func main() {
let c2 = C2()
c2.initializeC1()
}
main()
Run Code Online (Sandbox Code Playgroud)
这里我们创建了循环C2 - > C1 - > f - > C2.如果您运行此程序,deinit将不会被调用.但是,如果你更换f在initializeC1以{},例如,这将是.
对于常规闭包,我们可以使用捕获列表来避免强保留,但看起来您不能将它们用于方法.所以,问题是:在这种情况下我们怎么能打破保留周期呢?它有可能吗?
我想在 node.js 中实现代理服务器,这有点类似于 Charles 代理 - 它应该拦截来自我的移动应用程序的 HTTPS 请求,破译它们,根据正文内容将其中一些请求路由到原始后端,并使用一些静态文件模拟其他请求。