我经常遇到的代码中的错误是在格式化时使用包装的字符串.特别是在版本之间更改Swift规则时,它会导致细微的错误,通过单独读取代码并不明显,直到我真正查看结果字符串.它看起来像:
let myPostURL = "some/url/\(anObject.anID)"
Run Code Online (Sandbox Code Playgroud)
然后导致:
"some/url/Optional(123)"
Run Code Online (Sandbox Code Playgroud)
看到这一点是完全不可取的,只有崩溃才会更糟.有没有办法让编译器每次发生警告或错误?
我是DTCoreText,将HTML转换为属性文本.因为我想在前面设置字体,而不是之后,因为它会覆盖所有粗体,斜体等标签我想在构造函数中设置文档属性.这个构造函数要我给一个或多或少似乎是NSDictionary的AutoreleasingUnsafeMutablePointer?和前面的.有点.只有它不允许我以任何方式设置它.我试过.memory,尝试以任何可能的方式投射字典,它只是不接受任何数据.
let font = UIFont.systemFontOfSize(12)
let data = info.desc?.dataUsingEncoding(NSUTF8StringEncoding)
let attributes: NSMutableDictionary? = NSMutableDictionary()
attributes!.setObject(font, forKey: NSFontAttributeName)
var attributeRef: AutoreleasingUnsafeMutablePointer<NSDictionary?> = AutoreleasingUnsafeMutablePointer.null()
NSMutableAttributedString(HTMLData: data, documentAttributes: nil)
//attributeRef = *attributeDict
let attributedString = NSMutableAttributedString(HTMLData: data, documentAttributes:attributeRef)
let paragraphStyle: NSMutableParagraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = NSLineBreakMode.ByWordWrapping;
let range = NSMakeRange(0, attributedString.length)
attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: range)
lblMessage.attributedText = attributedString
Run Code Online (Sandbox Code Playgroud) \xe2\x80\x9cExpand Macro\xe2\x80\x9d 保持灰色,即使我\xe2\x80\x99ve 看到@Observable之前已经看到宏扩展。
但是,当我手动触发构建错误时,它确实会扩展错误的位置。在这种情况下,我的目标是不支持的 macOS 13.5ObservationRegistrar.
我尝试重新启动 Xcode,尝试不同的宏、不同的项目和项目类型。
\n可以在Swift中执行以下操作:
let params: String
if let aString = someOptionalString {
params = "?someparam=\(aString)"
} else {
params = ""
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我可以这样写它会更简洁:
let params = let aString = someOptionalString ? "?someparam=\(aString)" : ""
Run Code Online (Sandbox Code Playgroud)
要么
let params = case let aString = someOptionalString ? "?someparam=\(aString)" : ""
Run Code Online (Sandbox Code Playgroud)
然而,这不会以任何我能想到的方式编译.这可能吗?如果没有,为什么不呢?有没有办法建议实现它,或者我只能尝试首先将自己添加到Swift项目中,然后向社区提出更改?