对于初学者来说,这在升级到 Xcode 13 后才成为问题。我有一个用 Objective-C 编写的应用程序,并且正在使用一些用 Swift 编写的文件。为了访问在 Objective-C 中的应用程序中创建的类,我确实有一个名为 TargetName-Bridging-Header.h 的桥接标头,其中所有有问题的类都像这样导入:
#import "ClassName.h"
Run Code Online (Sandbox Code Playgroud)
在目标构建设置中,Objective-C Bridging Header 的值设置为桥接头文件的路径 (ProjectName/TargetName-BridgingHeader.h),并且应用程序似乎没有问题找到它。预编译桥接标头设置为“是”。安装 Objective-C 兼容性标头设置为“是”。此外,应用程序构建并运行,并且访问这些 Objective-C 构建的类似乎没有问题,但编译器继续抛出错误,指出它找不到这些类。我尝试过删除派生数据并进行清理。我缺少什么?这可能是其他人遇到过的新 Xcode bug 吗?
确切的错误是“Swift 编译器错误:无法在范围内找到‘ClassName.h’”
我一直在研究一个问题,目标是获取一个字符串并在存在模式时返回最长的重复模式。例如,如果字符串是“aabbbaa”,则将返回“yes aa”。如果字符串是“aavbbbvaabbb”,则返回“yes bbb”。我看了一下别人的解决方案,相信除了这一行似乎是关键之外,还可以理解每一段代码:copy[idx..idx2]=""
这是整个解决方案:
def PatternChaser(str)
patterns = {}
(0..str.length-1).each do |idx|
(idx + 1..str.length - 1).each do |idx2|
copy = str.dup
chunk = str[idx..idx2]
len = chunk.length
copy[idx..idx2] = ""
patterns[chunk] = len if copy.include?(chunk) && !patterns.include?(chunk)
end
end
return "no null" if patterns.empty?
patterns.each { |k,v| return "yes" + " " + k if v == patterns.values.max }
end
puts PatternChaser(STDIN.gets)
Run Code Online (Sandbox Code Playgroud)
如果这是相当常见的语法,请原谅我。到目前为止,我编码的时间还不到一年,到目前为止还没有在 StackOverflow 上找到答案。帮助将不胜感激!:)