私はUserManager
という名前のクラスを持っています。このSwiftクラスから継承できるようにベースを作成するにはどうすればよいですか?
public class UserManager{
static let sharedInstance = UserManager()
let center = NSNotificationCenter.defaultCenter()
let queue = NSOperationQueue.mainQueue()
var resources = Dictionary<Int, User>()
var clients = Dictionary<Int, Set<String>>()
private init(){
}
private func addToClientMap(id: Int, clientName: String){
if clients[id] == nil {
clients[id] = Set<String>()
clients[id]!.insert(clientName)
}else{
clients[id]!.insert(clientName)
}
}
func getResource(id: Int, clientName: String) -> User?{
if let resource = resources[id] {
addToClientMap(id, clientName: clientName)
return resource
}else{
return nil
}
}
func createResource(data:JSON, clientName: String) -> User? {
if let id = data["id"].int {
if let resource = resources[id] {
addToClientMap(id, clientName: clientName)
return resource
}else{
resources[id] = mapJSONToUser(data) //need to make generic
addToClientMap(id, clientName: clientName)
return resources[id]
}
}
return nil
}
func releaseResource(id: Int, clientName: String){
if clients[id] != nil {
clients[id]!.remove(clientName)
if clients[id]!.count == 0 {
resources.removeValueForKey(id)
clients.removeValueForKey(id)
}
}
}
}
私はUser
と呼ばれるオブジェクトを持っている、そしてそれは、このクラスではどこでも使われていることに注意してください。
PostManager
とAdminManager
というクラスがあり、上記のクラスと同じロジックが使用されています。
私は単純にコピーして、上記のコードを貼り付け、はPost
とAdmin
でオブジェクトにUser
を置き換えることができます。しかし、明らかにこれは悪い習慣です。
リソースを受け入れるには、このクラスで何ができますか?だけでなく、User
@matt現在のクラスは、オブジェクトとして '' 'User'''を受け入れます。私は任意のオブジェクトを使用できるように任意にしたいです。今のところ、多くの方法で '' User'''を返すことは難しいです。 – TIMEX
「共通のスーパークラスから派生する」方法これは私が助けが必要なところです: – TIMEX