【问题标题】:Error : 'AnyObject?' is not identical to 'AnyObject'错误:“任何对象?”与“AnyObject”不同
【发布时间】:2015-03-05 05:33:57
【问题描述】:

我正在尝试使用 UIActivityViewController 共享联系人 .vcf 文件。但我得到'AnyObject?与“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)
        }

任何帮助将不胜感激

提前致谢

【问题讨论】:

    标签: swift uiactivityviewcontroller vcf-vcard


    【解决方案1】:

    字符? 是一个类型修饰符。你从AnyObject 开始,写AnyObject? 并且你有一个新类型的'可选AnyObject'。这是与AnyObject 不同的类型。由于 Swift 是强类型的,因此您不能将 Int 放在需要 String 的位置,也不能在需要 AnyObject 的位置放置“可选 AnyObject”。

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

    如果错误是NSData.dataWithContentsOfMappedFile(path),那么解决方案不是简单地添加一个!(操作符解开可选值,如果值为nil,则崩溃)。你应该使用:

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

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

    【讨论】:

    • 我收到 objectToShare 变量的此错误。其中存储了vcf文件的内容。
    【解决方案2】:

    试试let objectsToShare = ["Send", NSData.dataWithContentsOfMappedFile(path)!]

    【讨论】:

    • 我收到 objectToShare 变量的此错误。其中存储了vcf文件的内容。
    • 错误已解决。但是你能帮我解决这个问题吗?我正在尝试将 vcf 文件附加到 UIActivityViewController。但它不是附加和归档。请帮忙。
    • 不抱歉,不知道。
    • @AnkitaShah,请打开另一个关于使用 UIActivityViewController 打开文件的问题。有人会帮助你解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多