Как добавить новое значение в индекс нулевого значения в NSArray в Swift - PullRequest
0 голосов
/ 12 сентября 2018

Я написал API, который возвращает имя пользователя и сумму и в какое время была сделана транзакция.Я получил ответ от бэкэнда в виде массива объектов и сохранил его как NSArray на стороне клиента.И я хочу прикрепить этот ответ к меткам, чтобы я преобразовал этот NSArray в String, а в базе данных некоторые поля пусты, поэтому ответ возвращает нулевые значения всякий раз, когда ответ возвращает нулевые значения. Я получаю эту ошибку, например «Не удалось привести значениеNSNUll to NSString ".То, что я думал, это заменить нулевое значение в этом массиве на строку.Я так старался, но всегда показывает ту же ошибку, как решить эту проблему.Это мой код:

                    let response = JSON as! NSDictionary
                    //example if there is an id
                    let deyaPaybalance = response.object(forKey: "Details") 
                    print(deyaPaybalance!)

                    let Amount1:[Double] = (response.object(forKey: "Amount")) as! [Double]
                    print("Amount is",Amount1)
                    for ele:Double in Amount1 {
                        self.amo += [String(ele)]

                    }
                    print("amount is in string",self.amo)
                    let time = response.object(forKey: "Time") as! NSArray
                    print("time is", time)
                    let id = response.object(forKey: "TransactionID")
                    print("id is",id!)
                    let name:NSArray = response.object(forKey: "RName") as!NSArray
                    print("name is",name)
                   // let len = name.count

                    for (object) in name.enumerated() {
                        if let i = name.index(of: "null") {
                            print("hey it's nnull")

                            //name.index(of: "null")

                        }
                        else {
                            print("hello")
                        }
                    }
                    print("name",name)
                    // It is used to get the date from the time tsamp
                    for element in time {
                        let ele = element
                        let formatter = ISO8601DateFormatter()
                        //print("date is",date1!)
                        formatter.formatOptions = [.withFullDate,
                                                   .withTime,
                                                   .withDashSeparatorInDate,
                                                   .withColonSeparatorInTime]
                        self.date2 = formatter.date(from: ele as! String)!
                        self.anotherFormatter.dateFormat = "MMM dd yyyy, h:mm a" // It is used to to show the date in th form of month year and time
                        self.anotherFormatter.string(from: self.date2)
                        let b = self.anotherFormatter.string(from: self.date2)
                        let final = b.replacingOccurrences(of: ",", with: " ")
                        let trimmedString = final.trimmingCharacters(in: .whitespaces)
                        self.dt += [trimmedString] // it is stored the final date and time
                        print("final tim is",trimmedString)


                    }
                    // End of the for loop
                    print(self.dt)

                    let contactViewController = self.storyboard?.instantiateViewController(withIdentifier: "TransactionDetails")as! TransactionDetails
                    contactViewController.method = deyaPaybalance as! [String]
                    contactViewController.amount = self.amo
                    contactViewController.timestamp = self.dt
                    contactViewController.transactionid = id as! [String]
                    contactViewController.name = name as! [String]// I am getting error here.
                    self.navigationController?.pushViewController(contactViewController, animated: true)
                    self.dismiss(animated: false, completion: nil)
                    UIApplication.shared.endIgnoringInteractionEvents()

1 Ответ

0 голосов
/ 13 сентября 2018

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

if let arr_name = name as? [String]{
    contactViewController.name = arr_name
}else{
    contactViewController.name = []
}

Для замены значения nil в [String]

var name = ["a",nil,"3"]

if let nil_index = name.index(of: nil){
    name[nil_index] = "empty"
}    
print(name as! [String]) // Output is ["a", "empty", "3"]
...