我正在从事ios项目。目前我没有任何问题。但是,iOS 11.4版本的iPhone 6存在问题。
我已经使用iOS 12.4 iPhone 6设备构建了项目,但没有任何问题。
连接物理设备时,这是一个问题。我的错误如下。
Undefined symbols for architecture arm64: "UTTypeConformsTo", referenced from: myapp.Document.uti(: Swift.String, conformsTo: Swift.String) -> Swift.Bool in Document.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Undefined symbol : _UTTypeConformsTo 我在Document.swift文件中有此功能。
Document.swift
class Document: UIDocument {
var fileData: Data?
var filesText: Data?
func uti(_ uti: String, conformsTo candidateParent: String) -> Bool {
return UTTypeConformsTo(uti as CFString, candidateParent as CFString)
}
... override func load(fromContents contents: Any, ofType typeName: String?) throws { if let fileType = typeName { if fileType == "public.png" || fileType == "public.jpeg" { // .jpg not recognized if let fileContents = contents as? Data { fileData = fileContents } } else if !uti(typeName!, conformsTo: "public.data") { throw IXError.fileAcessFailed } else { if let fileContents = contents as? Data { filesText = fileContents } print("File type unsupported.") }
} // end if let fileType = typeName
} // end func load
有问题的环境:
Xcode:版本11.0 设备:iPhone 6和11.4 ios版本//获取错误 设备:iPhone 6和12.4 ios版本//此设备正常运行。 两种设备不同。
到目前为止,还没有问题,但是尝试构建此设备时会出现问题。有什么问题?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的错误,通常意味着编译器在链接阶段找不到某个符号(在这个案例中是UTTypeConformsTo
)。这可能是由于未正确导入相关框架或者该函数在目标iOS版本中不可用所导致的。考虑到您提到的环境和错误信息,这里有一些建议来解决您的问题:
确认框架导入:确保您的项目已经正确导入了使用UTTypeConformsTo
函数所需的框架。这个函数属于MobileCoreServices
框架,在Swift中应该通过导入UniformTypeIdentifiers
来使用。请检查您的Document.swift
文件顶部是否包含了正确的导入语句:
import UniformTypeIdentifiers
如果没有,请添加。
条件编译:考虑到不同iOS版本间的API变化,您可以使用条件编译来确保只在支持相应API的系统上调用这些方法。虽然UTTypeConformsTo
在iOS 11及以后应该是可用的,但有时候根据Xcode版本和项目的配置,可能会出现意外情况。不过,对于此特定函数,条件编译可能不是必要的,因为它是从较早的iOS版本就开始支持的。
清理并重建项目:有时候Xcode的缓存或构建设置会引发这类问题。尝试执行以下步骤:
Product
> Clean Build Folder...
。~/Library/Developer/Xcode/DerivedData
的目录下的项目相关缓存。检查部署目标:确认您的项目的“Deployment Target”设置正确反映了您想要支持的最低iOS版本。可以在Xcode的项目设置中的General
标签页下找到并调整这一设置。确保它不低于iOS 11.4,因为这是您测试设备的系统版本。
查看Xcode和iOS SDK兼容性:虽然不太常见,但有时Xcode的新版本可能与旧版iOS设备不完全兼容。考虑到您使用的Xcode 11.0相对较老,如果上述方法都无法解决问题,考虑升级到更高版本的Xcode,同时注意检查新版本Xcode对iOS 11的支持情况。
如果以上步骤都不能解决问题,可能需要更详细地检查项目的构建设置,确保没有其他配置错误影响到了编译过程。