我正在开展一个项目,我希望获得特定标识符的图像。我有以下功能:
posix
...和func imageForIdentifier(identifier: String?) -> UIImage? {
if identifier == nil || identifier! == "" {
return nil
}
let directory = directoryForID(identifier!)
if let img = imgInCache.objectForKey(identifier!) as? UIImage {
return img
}
if let img = NSData(contentsOfFile: directory) {
return UIImage(data: img)
}
return nil
}
功能......
directoryForID
如果我传递一个图像标识符,它应该创建一个目录,在最后一个if-Statement中它应该从该目录返回func directoryForID(identifier: String) -> String {
let directoryPath: NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentationDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).first!
return (directoryPath.URLByAppendingPathComponent(identifier).path!)
}
个数据。但是它会跳过所有if-Statements并返回nil。即使我传递了正确的标识符,这怎么可能?
提前谢谢。
答案 0 :(得分:0)
原因在于您如何测试字符串对象标识符的 nil-ability 或空白:
identifier.length可以帮助验证标识符的内容......
答案 1 :(得分:0)
编辑回答。
func imageForIdentifier(identifier: String?) -> UIImage? {
guard let identifier else { return }
let directory = directoryForID(identifier)
if let img = imgInCache.objectForKey(identifier) as? UIImage {
return img
}
if let img = NSData(contentsOfFile: directory) {
return UIImage(data: img)
}
return nil
}