SWIFT COREDATA フェッチの結果を収集するfor-inループを設定する際に問題があります。 fetch results [index]を使用して個別の結果を取得するのに問題はありませんが、for-inループを挿入するとエラー(型の不一致)または(型にGeneratorのメンバーが含まれません)フェッチ結果を使用して別の配列に値を設定したい。SWIFT COREDATA - "in for"ループで別の配列を作成するループを使用して結果をループする
ご提供いただけるご支援は大変ありがとうございます。コードから
抜粋:
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 */
:
今、あなたは
NSManagedObject
として入力し、あなたのfor in
がたくさんクリーナーになっているコレクションを持っていますありがとう、私はこれらの2つのステートメントを変更し、無関係の変数を取り除いたが、別のエラーが発生する。フェッチから配列を作成するコード例を教えてください。 – user3784858私の答えで示したコードの最初の行で、必要な配列が得られます。あなたはどんなエラーを出していますか?漠然とした意見を述べることは価値がなく、誰でもあなたに助けを与えることはできません。 –
あなたが少なくとも私の答えが間違っていると思う理由をコメントを残して私に投票するつもりなら、 –