gpt4 book ai didi

ios - 在Swift 2.0中填充列表并显示结果

转载 作者:行者123 更新时间:2023-12-01 18:44:18 24 4
gpt4 key购买 nike

在过去的三周里,我一直在学习iOS开发,到目前为止,我正在学习有关Udemy的 class 。

但是,我正在关注其中一个讲座,通过该讲座我们可以构建Instagram克隆。

讲师正在使用以下三个数组:

var usernames = [""] // Stores all usernames
var userIds = [""] // Stores all Id's of the given usernames
var isFollowing = [false] // Stores where or not you're following that user

对我来说,试图使用两个数组来跟踪userId和哪个username一起使用基本上是一种意外,所以我决定着手寻找一种更可行的方法。我回到了.Net的日子,决定创建一个列表,所以我去创建了一个类,如下所示:
class Users{   
var Username : NSString = ""
var UserId : NSString = ""
var Following : Bool = false
}

现在在 ViewController中,我调用了Parse,这返回了一个用户列表,而我基本上是试图遍历响应,并将其添加到列表类中,如下所示:
  var t = [Users]() // After googling the web, this seems to be the syntax for a list declaration ? 
let u = Users()

for object in users{

if let o = object as? PFUser {

u.Username = o.username!
u.UserId = o.objectId!
u.Following = o.IsFollowing!

self.t.append(u)

}

}

print(self.t)

现在,当我将其打印到控制台时,将看到以下内容:

ParseStarterProject_Swift.Users

因为目前我只有一个用户,但是当我尝试遍历T并在控制台中显示用户名时,它什么也不显示。
for x in t {

print(x.Username)

}

最佳答案

您的基本直觉是正确的,最好有一个自定义对象数组,而不是多个数组。

关于使其更加快速,请考虑您的Users类型。您可能想要类似的东西:

struct User {   
let username: String
let userId: String
let following: Bool
}

注意,
  • 属性名称应以小写字母开头;
  • Users可能应称为User,因为它代表单个用户;
  • 我们通常不会将值初始化为这样的默认值,而是在初始化程序中指定它们;
  • 我们可能使用String而不是NSString;
  • 如果属性无法更改,则应使用let而不是var
  • 属性以小写字母开头;

  • 然后,您可以执行以下操作:
    var t = [User]()

    for object in users {
    if let o = object as? PFUser {
    t.append(User(username: o.username!, userId: o.objectId!, following: o.IsFollowing!)
    }
    }

    print(t)

    显然,使用所有这些 !强制解包运算符,您希望确信所有这些属性均已填充这些字段。

    使用 struct很不错,因为(a)它是一个值类型; (b)您免费获得初始化器; (c)您可以只打印它们。如果您确实希望 User成为引用类型( class),则可以执行以下操作:
    class User {
    let username: String
    let userId: String
    let following: Bool

    init(username: String, userId: String, following: Bool) {
    self.username = username
    self.userId = userId
    self.following = following
    }
    }

    如果您希望仅对它们进行 print编码,则可以将其定义为符合 CustomStringConvertible:
    extension User: CustomStringConvertible {
    var description: String { return "<User; username = \(username); userId = \(userId); following = \(following)>" }
    }

    使用该类,您可以随意更改 description计算的属性,以所需的任何格式显示它,但是它说明了这个想法。

    关于ios - 在Swift 2.0中填充列表并显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37825900/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com