小编Dep*_*o B的帖子

我在格式化中使用包装字符串时需要编译器警告或错误

我经常遇到的代码中的错误是在格式化时使用包装的字符串.特别是在版本之间更改Swift规则时,它会导致细微的错误,通过单独读取代码并不明显,直到我真正查看结果字符串.它看起来像:

let myPostURL = "some/url/\(anObject.anID)"
Run Code Online (Sandbox Code Playgroud)

然后导致:

"some/url/Optional(123)"
Run Code Online (Sandbox Code Playgroud)

看到这一点是完全不可取的,只有崩溃才会更糟.有没有办法让编译器每次发生警告或错误?

cocoa swift

2
推荐指数
1
解决办法
365
查看次数

Swift:填写AutoreleasingUnsafeMutablePointer <NSDictionary?>

我是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)

dtcoretext swift ios8

1
推荐指数
1
解决办法
3441
查看次数

Xcode 15.0:“扩展宏”保持灰色

\xe2\x80\x9cExpand Macro\xe2\x80\x9d 保持灰色,即使我\xe2\x80\x99ve 看到@Observable之前已经看到宏扩展。

\n

在此输入图像描述

\n

但是,当我手动触发构建错误时,它确实会扩展错误的位置。在这种情况下,我的目标是不支持的 macOS 13.5ObservationRegistrar.

\n

在此输入图像描述

\n

我尝试重新启动 Xcode,尝试不同的宏、不同的项目和项目类型。

\n

xcode swift xcode15 swift-macro

1
推荐指数
1
解决办法
286
查看次数

为什么不快速允许三元组中基于let的决策?

可以在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项目中,然后向社区提出更改?

swift

0
推荐指数
1
解决办法
62
查看次数

标签 统计

swift ×4

cocoa ×1

dtcoretext ×1

ios8 ×1

swift-macro ×1

xcode ×1

xcode15 ×1