Mat*_*ros 5 cocoa-touch ios swift
我正在编写一个函数,给定一个类型,只需从磁盘中取消归档对象并将其作为该类型返回.这就是它的样子:
public class func objectWithFileName<T>(fileName: String, inFolder folder: NSSearchPathDirectory) -> T? {
    // Build an NSURL var called fileURL based on the fileName and folder.
    // ...
    // If any object was found
    if let object: AnyObject = NSKeyedUnarchiver.unarchiveObjectWithFile(fileURL.path!) {
        // Attempt to return the object as an object of type T.
        if let typedObject = object as? T {
            return typedObject
        }
    }
    return nil
}
计划使用函数的方法是这样,它不起作用(我得到"不能专门化非泛型定义"):
if let user = MQFileManager.objectWithFileName<User>("User", inFolder: .DocumentDirectory) {
}
我怎样才能正确拉出它?
如果指定返回值的变量类型,则可以执行其余类型推断.因此,如果您有User类型,只需调用该函数,如下所示:
if let user: User = MQFileManager.objectWithFileName("User", inFolder: .DocumentDirectory) {
}
由于user变量属于User类型,因此编译器可以将T泛型推断为User类型
| 归档时间: | 
 | 
| 查看次数: | 2016 次 | 
| 最近记录: |