gpt4 book ai didi

swift - 错误 : 'AnyObject?' is not identical to 'AnyObject'

转载 作者:行者123 更新时间:2023-11-28 11:20:12 25 4
gpt4 key购买 nike

我正在尝试使用 UIActivityViewController 共享联系人 .vcf 文件。但我收到“任何对象?”与“AnyObject”不同

下面是我的代码行:

let dirs : [String]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
if ((dirs) != nil) {
let dir = dirs![0]; //documents directory
let path = dir.stringByAppendingPathComponent("\(person.name).vcf")
let text: NSString = person.contact as NSString

text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);

let objectsToShare = ["Send", NSData.dataWithContentsOfMappedFile(path)]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
self.presentViewController(activityVC, animated: true, completion: nil)
}

任何帮助将不胜感激

提前致谢

最佳答案

字符 ? 是类型修饰符。您从 AnyObject 开始,编写 AnyObject? 并且您有一个新类型的“Optional AnyObject”。这是一个不同于 AnyObject 的类型。由于 Swift 是强类型的,因此您不能将 Int 放在需要 String 的地方,也不能将 'Optional AnyObject' 放在 AnyObject 是预期的。

当然,返回值也是有类型的。您可能正在调用一个返回“可选 X”的函数;如果您尝试在预期为“X”的地方使用它,则会出现类型错误 - 正如您所描述的那样。

如果错误与 NSData.dataWithContentsOfMappedFile(path) 相关,那么解决方案不是简单地添加一个 !(用于解包可选值的运算符,但如果值为 nil)。你应该使用:

["Send", (NSData.dataWithContentsOfMappedFile(path) ?? "default")]

这将使用 NSData 值(如果它存在),否则 "default"(您决定使用什么,如果有的话)。

关于swift - 错误 : 'AnyObject?' is not identical to 'AnyObject' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com