我坚持使用Swift进行App开发练习(Ch.2.3,Ex.9)。如何在此正确使用类型属性?

时间:2018-03-23 03:54:34

标签: swift xcode

  1. 想象一下,你有一个需要用户登录的应用程序。你可能有一个类似于下面显示的User结构。但是,除了跟踪特定用户信息之外,您可能还想知道当前登录用户的身份。在下面的currentUser结构上创建一个User类型属性,并将其分配给代表您的user对象。现在,您可以通过User结构访问当前用户。打印出currentUser

    的属性
    struct User {
        var userName: String
        var email: String
        var age: Int
        static var currentUser = User(userName: "Bob", email: "bob@gmail.com", age: 18) //This line was typed by me.
    
        // My answer for the 2nd part.
        mutating func logIn(user: User) {
            currentUser = user
            print("\(userName) has logged in.")
        }
    }
    

    打印(User.currentUser)

  2. User结构相关联的其他属性和操作可能是类型属性或方法的良好候选者。一种可能是登录的方法。返回并创建一个名为logIn(user:)的类型方法,其中user的类型为User。在方法的主体中,将传入的用户分配给currentUser属性,并使用用户的userName打印出一条说明用户已登录的语句。

  3. 在下面,调用logIn(user:)方法并传入与上面指定给currentUser的实例不同的User实例。观察控制台中的打印输出。

    编辑:想出来了!

    struct User {
        var userName: String
        var email: String
        var age: Int
        static var currentUser = User(userName: "Bob", email: "bob@gmail.com", age: 18)
    
        static func logIn(user: User) {
            currentUser = user
            print("\(currentUser.userName) has logged in.")
        }
    }
    
    print(User.currentUser.userName) //Bob
    print(User.currentUser.email)    //bob@gmail.com
    print(User.currentUser.age)      //18
    
    var newUser = User(userName: "Joey", email: "joey@yahoo.com", age: 20)
    User.logIn(user: newUser)     //Joey has logged in.
    
    print(User.currentUser.userName) //Joey
    print(User.currentUser.email)    //joey@yahoo.com
    print(User.currentUser.age)      //20
    

2 个答案:

答案 0 :(得分:0)

struct User {
    var userName: String
    var email: String
    var age: Int
    
    static var currentUser = User(userName: "Arminius", email: "arminius@me.com", age: 36) 
    //this sets up a 'default' user profile so it isn't blank.
                
    mutating func logIn(userName: String, email: String, age: Int) {
        // this function changes the 'default' user and logs in a new user
        self.userName = userName
        self.email = email
        self.age = age
        print("\(userName) has logged in successfully.")
    }
}

然后您将通过logIn(user:)调用User.currentUser.logIn()函数,登录一个新用户。我不知道我们的解决方案有何不同,但是对我来说,创建newUser然后将其分配给currentUser似乎更清楚了,但是已经过去两年了,您的解决方案确实为我指明了正确的方向

答案 1 :(得分:-1)

当我运行你的代码时,我得到了以下输出" Bob已登录。"你的程序有效。这是我的代码:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<input id="input"  type="file" accept="image/*" style=" width: 180px;" #files (change)="save($event)" />

您希望结果到底是什么?