SWIFT COREDATA Ich habe Probleme beim Einrichten einer For-In-Schleife, um Ergebnisse von einem Abruf zu sammeln. Kein Problem, einzelne Ergebnisse durch Abruf von Ergebnissen [Index] zu erhalten, aber das Einfügen von for-in-Schleife gibt mir einen Fehler (Typ stimmt nicht überein) oder (Typ enthält kein Element in Generator). Ich möchte die Abrufergebnisse verwenden, um ein separates Array zu füllen.SWIFT COREDATA - Durchschleifen von Ergebnissen mit "for in" -Schleifen zum Erstellen eines separaten Arrays
Jede Hilfe, die Sie zur Verfügung stellen können, wird sehr geschätzt.
Auszug aus dem Code:
import Foundation
import UIKit
import CoreData
// globaals
var pickResult:String?
var pickMultiresult:[AnyObject]?
// add var
var fullnameMulti:[String]? // array of full names
var i:Int = 0
// end new var
class ClientPicker:UIViewController, UIPickerViewDelegate {
// connections
@IBOutlet weak var singleResult: UITextField!
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
@IBOutlet weak var firstname: UITextField!
@IBOutlet weak var status: UILabel!
var lastname:String = ""
var phone:String = ""
var email:String = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
// MARK: ********** block 2 --- findClient ****
@IBAction func findClient(sender: AnyObject) {
let entityDescription = NSEntityDescription.entityForName("Contacts", inManagedObjectContext: managedObjectContext)
let request = NSFetchRequest()
request.entity = entityDescription
let pred = NSPredicate(format: "(firstname = %@)", firstname.text!)
request.predicate = pred
do {
var results = try managedObjectContext.executeFetchRequest(request)
multiresult = results
if results.count > 0 {
// let match = results[0] as! NSManagedObject NOTE: these return correct data for indices 0 and 3
// let match = results[3] as! NSManagedObject NOTE: these return correct data for indices 0 and 3
status.text = "There are \(results.count) people named \(firstname.text!)"
} else {
status.text = "No Match"
}
} catch let error as NSError {
status.text = error.localizedFailureReason
}
// for in loop to populate firstnameMulti array
i = 0
for i in results{
var p = i
let match = results[p] as! NSManagedObject
/* the following code returns correct fullname when used outside of for loop
but error when I use the for loop */
firstname.text = match.valueForKey("firstname") as? String
/***************** concatenate first and last names ********/
let first = match.valueForKey("firstname") as? String
let last = match.valueForKey("lastname") as? String
// concatenate
var fullname:String = ""
fullname = "\(first!) \(last!)"
singleResult.text = fullname
}
}
*/ error: value of type string has no member in Generator */
Danke ich änderte diese 2 Aussagen und entfernte überflüssige Variablen, aber jetzt haben Sie einen anderen Fehler. Können Sie mich auf einen Beispielcode zum Erstellen eines Arrays aus einem Abruf hinweisen? – user3784858
Die erste Codezeile, die ich in meiner Antwort gezeigt habe, gibt Ihnen das Array, das Sie brauchen. Welchen Fehler bekommst du? Unbestimmte Kommentare geben keinen Wert und ermöglichen es niemandem, Ihnen zu helfen. –
Wenn Sie mich abstimmen, lassen Sie wenigstens einen Kommentar, warum Sie denken, dass meine Antwort falsch ist. –