[英]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.