Ich schrieb eine 2 Klassen in meiner App, die als Datenklassen durchführen müssen. Einer ist für die Benutzerdetails und einer ist für die Produkte. beide Klassen ist derselbe Code mit unterschiedlichen Namen und Variablen. Die Produktklasse funktioniert ok, aber die Benutzerklasse macht die sharedInstance für mich nicht. Die Json bekommen die Daten in Ordnung und ich kann es ausdrucken.Ein Paar Singletons in einem Swift 2 Anwendung
hier ist mein Code:
import UIKit
import Alamofire
import SwiftyJSON
class userDetailsDataClass {
let defaults = NSUserDefaults.standardUserDefaults()
var user: [SwiftyJSON.JSON] = []
init() {
let baseUrlString = "http://example.com/ios/login.php?"
let parameters = [String:String]()
let urlSignup = baseUrlString + "id=" + defaults.stringForKey("userID")! + "&macnumber=" + defaults.stringForKey("currentUUID")!
//Encode url to solve spaces issues
let urlwithPercentEscapes = urlSignup.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
print(urlwithPercentEscapes)
Alamofire.request(.GET, urlwithPercentEscapes, parameters: parameters).responseJSON { response in
if response.result.isSuccess {
let json = JSON(response.result.value!)
let data = json.arrayValue
print(json)
if json["error"] == "wrongmac" {
print("wrong mac")
} else {
let macFromDb = json["macnumber"]
self.defaults.setValue(String(macFromDb), forKey: "macFromDb")
userDetailsDataClass.sharedInstance.user = data
print(String(userDetailsDataClass.sharedInstance.user.count)+"user count from alamo ")
}
}
let nc = NSNotificationCenter.defaultCenter()
nc.postNotificationName("userDataReadyForSplash", object: nil)
}
}
//Create one class for shared Instance
struct Static {
static var onceToken : dispatch_once_t = 0
static var instance : userDetailsDataClass? = nil
}
class var sharedInstance : userDetailsDataClass {
dispatch_once(&Static.onceToken){
Static.instance = userDetailsDataClass()
}
return Static.instance!
}
}
Vermeiden Sie Singletons, wenn Sie können. Wenn Sie nicht können, machen sie echte Singletons, wie folgt: http://StackOverflow.com/a/36012158/2227743 – Moritz