/ / Ako načítať základné dátové objekty do slovníka v aplikácii Swift? - rýchly, xcode, slovník, základné údaje

Ako načítať hlavné dátové objekty do Slovníka v Swift? - swift, xcode, slovník, core-data

Uložil som objekty do základných údajov a hľadám spôsob, ako načítať tieto objekty ako Slovník

Tu je príklad môjho kódu, kde oddiely sú kľúče pre slovník a spoločnosť ako pole základných dátových objektov.

private var companies = Dictionary<String, Array<Company>>()
private var sections: [String] = ["Pending", "Active", "Pending"]

override func viewWillAppear(_ animated: Bool) {
let fetchRequest : NSFetchRequest<Company> = Company.fetchRequest()
let moc = DatabaseController.getContext()
do {
let request = try moc.fetch(fetchRequest)
for case let (index, object) in request.enumerated() {
companies[sections[index]]!.append(object)
}
} catch let error as NSError {
print("Could not fetch. (error), (error.userInfo)")
}}

Pri pokuse o spustenie kódu sa vyskytla chyba:

tu zadajte popis obrázku

fatálna chyba: neočakávane sa zistilo nulo pri rozbalení voliteľnej hodnoty

Mohol by mi niekto pomôcť s týmto problémom?

odpovede:

1 pre odpoveď č. 1

Toto chybové hlásenie znamená, že vynútite vybalenie voliteľnej položky, ktorá nemá hodnotu. Inými slovami, ktoré používate ! kde by ste nemali „t.!).)

Pozrime sa na riadok, kde to urobíte:

companies[sections[index]]!.append(object)

Ak to rozdelíme a pridáme odvodené typy, máme:

let section: String? = sections[index]
let companyArray: Array<Company> = companies[section]!

Zrážate sa, pretože companies začína prázdny, preto sa požiadavka na akékoľvek pole vráti nil, (V skutočnosti si nie som istý, ako sa váš kód kompiluje, pretože do slovníka sa nemôžete prihlásiť pomocou voliteľného doplnku.)

Ak to však vyriešite, stále máme problém, pretože na vyhľadanie tejto sekcie používate index stiahnutého poľa. Ak máte viac ako tri spoločnosti, začne to zlyhávať.

Mám podozrenie, že chcete niečo ako:

for let company in result {
if var companyArray = companies[company.status] {
companyArray.append(company)
} else {
companies[company.status] = [company]
}
}

Kde status je vynájdená nehnuteľnosť dňa Company ktorý vráti a String ako „Čaká sa“ alebo „Aktívne“.


0 pre odpoveď č. 2

Našiel som riešenie, stačí použiť NSFetchResultController, aby sa údaje v TableView zobrazovali v rôznych sekciách.