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
}
Run Code Online (Sandbox Code Playgroud)
计划使用函数的方法是这样,它不起作用(我得到"不能专门化非泛型定义"):
if let user = MQFileManager.objectWithFileName<User>("User", inFolder: .DocumentDirectory) {
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确拉出它?
如果指定返回值的变量类型,则可以执行其余类型推断.因此,如果您有User类型,只需调用该函数,如下所示:
if let user: User = MQFileManager.objectWithFileName("User", inFolder: .DocumentDirectory) {
}
Run Code Online (Sandbox Code Playgroud)
由于user变量属于User类型,因此编译器可以将T泛型推断为User类型
| 归档时间: |
|
| 查看次数: |
2016 次 |
| 最近记录: |