私はこの質問の回答を探していましたが、何も見つかりませんでした。私は迅速なプログラミングでも新しいstackoverflowであるので、誰もが私を助けることができたら嬉しいです。1つのプロパティを持つ複数のテキストフィールドから配列を並べ替える方法
私は名前、prenameのための複数のテキストフィールドであり、「EditViewController」などでアプリを作ってみる
私は、この「電話帳」の項目を保存することができるよ、私はできませんよプロパティ名で配列をソートする。
編集インターフェースのみが、このコードされています
import UIKit
class EditViewController: UIViewController {
@IBOutlet weak var vornameTextField: UITextField!
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var adresseTextField: UITextField!
@IBOutlet weak var hausnummerTextField: UITextField!
@IBOutlet weak var plzTextField: UITextField!
@IBOutlet weak var ortTextField: UITextField!
@IBOutlet weak var telefonnummerTextField: UITextField!
@IBOutlet weak var berufTextField: UITextField!
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
}
コードテキストフィールドを保存するためには、次のとおりです。
import UIKit
class Telefonbuch: NSObject, NSCoding
{
var name: String!
var vorname: String!
var beruf: String!
var telefonnummer: String!
var adresse: String!
var hausnummer: String!
var plz: String!
var ort: String!
init(name: String, vorname: String, beruf:String, telefonnummer: String, adresse: String, hausnummer: String, plz: String, ort: String)
{
self.name = name
self.vorname = vorname
self.beruf = beruf
self.telefonnummer = telefonnummer
self.adresse = adresse
self.hausnummer = hausnummer
self.plz = plz
self.ort = ort
}
required init?(coder aDecoder: NSCoder) {
name = aDecoder.decodeObjectForKey("name") as? String
vorname = aDecoder.decodeObjectForKey("vorname") as? String
beruf = aDecoder.decodeObjectForKey("beruf") as? String
telefonnummer = aDecoder.decodeObjectForKey("telefonnummer") as? String
adresse = aDecoder.decodeObjectForKey("adresse") as? String
hausnummer = aDecoder.decodeObjectForKey("hausnummer") as? String
plz = aDecoder.decodeObjectForKey("plz") as? String
ort = aDecoder.decodeObjectForKey("ort") as? String
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
aCoder.encodeObject(vorname, forKey: "vorname")
aCoder.encodeObject(beruf, forKey: "beruf")
aCoder.encodeObject(telefonnummer, forKey: "telefonnummer")
aCoder.encodeObject(adresse, forKey: "adresse")
aCoder.encodeObject(hausnummer, forKey: "hausnummer")
aCoder.encodeObject(plz, forKey: "plz")
aCoder.encodeObject(ort, forKey: "ort")
}
static func saveArray(data: [Telefonbuch])
{
if data.count == 0 {return}
if let path = getFilePath() {
NSKeyedArchiver.archiveRootObject(data, toFile: path)
}
}
static func loadArray() -> [Telefonbuch]
{
if let path = getFilePath() {
if let result = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? [Telefonbuch]
{
return result
}
}
return [Telefonbuch]()
}
private static func getFilePath() -> String?
{
let pfd = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
if let pfad = pfd.first {
return pfad + "Kontakte.bin"
}else {
return nil
}
}
}
今、私は並べ替え、私はデータを表示するテーブルビューを作成したいと思いますヘッダー付き。しかし、[Telefonbuch] Arrayをプロパティ名でソートすることはできません。
import UIKit
class OverViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var addButton: UIBarButtonItem!
@IBOutlet weak var editButton: UINavigationItem!
var kontaktListe = Telefonbuch.loadArray()
override func viewDidLoad()
{
super.viewDidLoad()
tableView.dataSource = self
tableView.reloadData()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
@IBAction func addButtonPressed(sender: AnyObject)
{
performSegueWithIdentifier("editSegue", sender: self)
}
@IBAction func returnToMainController(segue: UIStoryboardSegue)
{
if let scr = segue.sourceViewController as? EditViewController
{
let newvorname = scr.vornameTextField.text
let newname = scr.nameTextField.text
let newadresse = scr.adresseTextField.text
let newhausnummer = scr.hausnummerTextField.text
let newpostleitzahl = scr.plzTextField.text
let newort = scr.ortTextField.text
let newtelefonnummer = scr.telefonnummerTextField.text
let newberuf = scr.berufTextField.text
let newKontakt = Telefonbuch(name: newname!, vorname: newvorname!, beruf: newberuf!, telefonnummer: newtelefonnummer!, adresse: newadresse!, hausnummer: newhausnummer!, plz: newpostleitzahl!, ort: newort!)
kontaktListe.insert(newKontakt, atIndex: 0)
Telefonbuch.saveArray(kontaktListe)
tableView.reloadData()
}
}
extension OverViewController: UITableViewDataSource
{
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
return 3
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return kontaktListe.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("ProtoCell", forIndexPath: indexPath)
let row = indexPath.row
cell.textLabel?.text = kontaktListe[row].name + " " + kontaktListe[row].vorname
cell.detailTextLabel?.text = kontaktListe[row].ort
return cell
}
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
return true
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
if editingStyle == .Delete
{
kontaktListe.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
tableView.reloadData()
}
}
extension OverViewController: UITableViewDelegate
{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
performSegueWithIdentifier("detailSegue", sender: self)
}
}
私は解決策が見つからないので、誰も私を助けることができます。
ありがとうございます。
。私はこの方法でやろうと思ったが、うまくいかなかった。しかし、あなたの答えで、それはちょうど完全に働いた。ありがとうございました – Mikey
簡潔さのために '()'を省略することもできます: 'kontaktListe.sort {$ 0.name> $ 1.name}' – ColGraff