簡體   English   中英

錯誤:“ AnyObject?” 與“ AnyObject”不同

[英]Error : 'AnyObject?' is not identical to 'AnyObject'

我正在嘗試使用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)
        }

任何幫助將不勝感激

提前致謝

性格? 是類型修飾符。 您從AnyObject開始,編寫AnyObject? 並且您有一種新型的“可選AnyObject”。 那是與AnyObject不同的類型。 由於雨燕是強類型的,你不能把一個Int ,其中一個String ,預計也可以把一個“可選AnyObject”,其中一個AnyObject的預期。

當然,返回值也具有類型。 您可能會調用返回“可選X”的函數; 如果您嘗試在期望的'X'位置使用它,則會出現類型錯誤-如您所描述。

如果錯誤與NSData.dataWithContentsOfMappedFile(path) ,則解決方案不是簡單地添加! (操作員解開可選值,但如果該值為nil則解壓縮)。 您應該使用:

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

如果存在,它將使用NSData值,否則使用"default" (您決定使用什么)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM