Scoreboard/PlayerInfo.swift
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
The `PlayerInfo` class manages the players information: name, score, image and stores the data to be displayed. |
*/ |
import Foundation |
import Cocoa |
class PlayerInfo: NSObject, NSCoding { |
// MARK: Properties |
dynamic var name: String |
dynamic var score: Int |
dynamic var image: NSImage |
// MARK: Initialization |
init(name: String, score: Int, image: NSImage? = nil) { |
self.name = name |
self.score = score |
if let image = image { |
self.image = image |
} |
else { |
self.image = NSImage(named: "NSUserGuest")! |
} |
} |
// MARK: NSCoding |
required convenience init?(coder aDecoder: NSCoder) { |
guard let name = aDecoder.decodeObject(forKey: "playerName") as? String, let image = aDecoder.decodeObject(forKey: "image") as? NSImage else { return nil } |
let score = aDecoder.decodeInteger(forKey: "playerScore") |
self.init(name: name, score: score, image: image) |
} |
@objc(encodeWithCoder:) internal func encode(with encoder: NSCoder) { |
encoder.encode(name, forKey: "playerName") |
encoder.encode(score, forKey: "playerScore") |
encoder.encode(image, forKey: "image") |
} |
} |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-10-27