Как вернуть массив? - PullRequest
       3

Как вернуть массив?

0 голосов
/ 23 сентября 2019

Я пытаюсь вернуть массив со всеми переменными.Так что я могу хранить все внутри массива.Как я могу исправить свой код, чтобы он помещал все в массив?

func getFriendRecord () -> [String] {
    var info = ""
    let fetchRequest: NSFetchRequest<Friend> = Friend.fetchRequest()
    do {
        let searchResults = try getContext().fetch(fetchRequest)
        for trans in searchResults as [NSManagedObject] {
            let firstName = String(trans.value(forKey: "firstName") as! String)
            let lastName = String(trans.value(forKey: "lastName") as! String)
            let gender = String(trans.value(forKey: "gender") as! String)
            let age = String(trans.value(forKey: "age") as! String)
            let address = String(trans.value(forKey: "address") as! String)
            info = info + firstName + ", " + lastName + ", " + gender + ", " + age + ", " + address + "\n"
        }
    } catch {
        print("Error with request: \(error)")
    }
    return info
}

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Если вы хотите вернуть массив, тогда info должен быть массивом:

var info: [String] = []

И тогда вы добавите в этот массив дополнительные элементы:

let record = [firstName, lastName, gender, age, address].joined(separator: ", ") + "\n"
info.append(record)

Я изменил это на joined, потому что вы должны избегать использования нескольких + в выражении.В Swift по неочевидным причинам, связанным с перегрузками, компиляция чрезвычайно медленная.В этом нет ничего плохого, просто он не работает хорошо.Вы также можете просто использовать здесь интерполяцию строк, и это было бы вполне нормально (возможно, даже немного лучше):

let record = "\(firstName), \(lastName), \(gender), \(age), \(address)\n"
0 голосов
/ 23 сентября 2019

Вы должны определить структуру, а затем вы можете вернуть ее и добавить в массив.

    struct Info {
      var firstName: String?
      var lastName: String?
      var gender: String?
      var age: String?,
      var adress: String?
    }

И тогда вы можете использовать эту структуру.

    var info  : [Info] = []
    func getFriendRecord () {
        var info = ""
        let fetchRequest: NSFetchRequest<Friend> = Friend.fetchRequest()
        do {
            let searchResults = try getContext().fetch(fetchRequest)
            for trans in searchResults as [NSManagedObject] {
                let firstName = trans.value(forKey: "firstName") as! String
                let lastName = trans.value(forKey: "lastName") as! String
                let gender = trans.value(forKey: "gender") as! String
                let age = trans.value(forKey: "age") as! String
                let address = trans.value(forKey: "address") as! String
                let information = Info(firstName:firstName,lastName:lastName,gender:gender,age:age,adress:adress)
                self.info.append(information)

            }
        } catch {
            print("Error with request: \(error)")
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...