키워드로 배열의 요소 검색 [swift]
개시하다
배열에 텍스트 등을 미리 넣을 수 있을 때 키워드로 검색을 해서 그 키워드를 포함하는 요소를 찾아내는 것이 편리하다고 생각합니다.완성형은 ↓ 키워드를 빈칸으로 구분하여 여러 키워드로 검색할 수 있습니다.
Interface Builder
textField를 배치하고 3가지 bodan(add, search,clear)을 준비했습니다.아래에 테이블뷰를 놓고 그룹의 요소와 검색 결과를 표시합니다.이런 느낌
이루어지다
공백으로 구분된 문자열.Extension을 머리에 덧붙이다.
ViewController
import UIKit
// keyword分解用のextension
extension String {
var words: [String] {
return componentsSeparatedByCharactersInSet(.punctuationCharacterSet()).joinWithSeparator("").componentsSeparatedByString(" ").filter{!$0.isEmpty}
}
}
stringAray에 텍스트를 미리 넣습니다.
ViewController //すべてのテキストを入れる配列
var stringArray = ["this is a testString, please add your sentence.","I like apples", "Do you like apples?","今日はいい天気ですね", "はい、いい天気です","私はappleが好きです"]
//検索結果を入れる配列
var searchArray = [String]()
@IBOutlet var table: UITableView!
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
table.delegate = self
table.dataSource = self
table.reloadData()
}
누름단추
dd, 검색,clear 단추를 실행합니다.dd는 텍스트를 추가하는 단추이고,search는 검색하는 단추이며,clear는 리셋 단추입니다.
ViewController //addボタン
@IBAction func add(sender: UIButton) {
if textField?.text == "" {
textAlert()
} else {
let newText = textField.text
stringArray.append(newText!)
print("全テキスト->",stringArray)
table.reloadData()
}
}
//searchボタン
@IBAction func search(sender: UIButton) {
if textField?.text == "" {
textAlert()
} else {
let keyWords = textField.text?.words
var preSearchArray = [String]()
print(keyWords)
for keyWord in keyWords! {
// keyWordを含むテキストをresultsに加える
let results = stringArray.filter{$0.containsString(keyWord)}
for result in results {
preSearchArray.append(result)
//重複する配列は除く
let removeOverlapResultArray = NSOrderedSet(array: preSearchArray)
searchArray = removeOverlapResultArray.array as! [String]
}
print("検索結果を入れる配列 ->",searchArray)
//もしキーワードに引っかかる検索が見つからなかった場合アラートを出す
if searchArray == [] {
let alert = UIAlertView()
alert.title = "アラート"
alert.message = "検索されたキーワードを含むテキストは存在しません"
alert.addButtonWithTitle("OK")
alert.show()
}
table.reloadData()
}
}
}
//clearボタン
@IBAction func clear (sender: UIButton) {
searchArray = []
textField.text?.removeAll()
table.reloadData()
}
func textAlert() {
let alert = UIAlertView()
alert.title = "アラート"
alert.message = "文字が入力されていません"
alert.addButtonWithTitle("OK")
alert.show()
}
이런 느낌.filter가 아주 편리하네요. 중복 배열을 배제하지 않으면 여러 검색 키워드의 텍스트가 중복 표시됩니다.
tableview
그리고 테이블 뷰의 설치 부분입니다.일반 텍스트 표시 및 검색 결과 표시 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchArray == [] {
return stringArray.count
} else {
return searchArray.count
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
if searchArray == [] {
cell.textLabel?.text = stringArray[indexPath.row]
} else {
cell.textLabel?.text = searchArray[indexPath.row]
}
return cell
}
끝맺다
여러 키워드(예를 들어 apple, 날씨)를 사용하여 검색할 때 apple이나 날씨를 포함하는 검색 결과를 표시합니다.앱과 날씨, 쌍방의 검색을 포함하려면 어떻게 해야 좋을까요?
나는 코드에 좋지 않은 점이 매우 많다고 생각한다.당신의 건의를 받을 수 있다면 다행입니다.
참고 자료
공백으로 구분된 문자열 가져오기
filter 사용법
배열에서 중복된 요소 제거
Reference
이 문제에 관하여(키워드로 배열의 요소 검색 [swift]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/boomboom/items/f196c3cd1f366d7d9623
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
textField를 배치하고 3가지 bodan(add, search,clear)을 준비했습니다.아래에 테이블뷰를 놓고 그룹의 요소와 검색 결과를 표시합니다.이런 느낌
이루어지다
공백으로 구분된 문자열.Extension을 머리에 덧붙이다.
ViewController
import UIKit
// keyword分解用のextension
extension String {
var words: [String] {
return componentsSeparatedByCharactersInSet(.punctuationCharacterSet()).joinWithSeparator("").componentsSeparatedByString(" ").filter{!$0.isEmpty}
}
}
stringAray에 텍스트를 미리 넣습니다.
ViewController //すべてのテキストを入れる配列
var stringArray = ["this is a testString, please add your sentence.","I like apples", "Do you like apples?","今日はいい天気ですね", "はい、いい天気です","私はappleが好きです"]
//検索結果を入れる配列
var searchArray = [String]()
@IBOutlet var table: UITableView!
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
table.delegate = self
table.dataSource = self
table.reloadData()
}
누름단추
dd, 검색,clear 단추를 실행합니다.dd는 텍스트를 추가하는 단추이고,search는 검색하는 단추이며,clear는 리셋 단추입니다.
ViewController //addボタン
@IBAction func add(sender: UIButton) {
if textField?.text == "" {
textAlert()
} else {
let newText = textField.text
stringArray.append(newText!)
print("全テキスト->",stringArray)
table.reloadData()
}
}
//searchボタン
@IBAction func search(sender: UIButton) {
if textField?.text == "" {
textAlert()
} else {
let keyWords = textField.text?.words
var preSearchArray = [String]()
print(keyWords)
for keyWord in keyWords! {
// keyWordを含むテキストをresultsに加える
let results = stringArray.filter{$0.containsString(keyWord)}
for result in results {
preSearchArray.append(result)
//重複する配列は除く
let removeOverlapResultArray = NSOrderedSet(array: preSearchArray)
searchArray = removeOverlapResultArray.array as! [String]
}
print("検索結果を入れる配列 ->",searchArray)
//もしキーワードに引っかかる検索が見つからなかった場合アラートを出す
if searchArray == [] {
let alert = UIAlertView()
alert.title = "アラート"
alert.message = "検索されたキーワードを含むテキストは存在しません"
alert.addButtonWithTitle("OK")
alert.show()
}
table.reloadData()
}
}
}
//clearボタン
@IBAction func clear (sender: UIButton) {
searchArray = []
textField.text?.removeAll()
table.reloadData()
}
func textAlert() {
let alert = UIAlertView()
alert.title = "アラート"
alert.message = "文字が入力されていません"
alert.addButtonWithTitle("OK")
alert.show()
}
이런 느낌.filter가 아주 편리하네요. 중복 배열을 배제하지 않으면 여러 검색 키워드의 텍스트가 중복 표시됩니다.
tableview
그리고 테이블 뷰의 설치 부분입니다.일반 텍스트 표시 및 검색 결과 표시 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchArray == [] {
return stringArray.count
} else {
return searchArray.count
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
if searchArray == [] {
cell.textLabel?.text = stringArray[indexPath.row]
} else {
cell.textLabel?.text = searchArray[indexPath.row]
}
return cell
}
끝맺다
여러 키워드(예를 들어 apple, 날씨)를 사용하여 검색할 때 apple이나 날씨를 포함하는 검색 결과를 표시합니다.앱과 날씨, 쌍방의 검색을 포함하려면 어떻게 해야 좋을까요?
나는 코드에 좋지 않은 점이 매우 많다고 생각한다.당신의 건의를 받을 수 있다면 다행입니다.
참고 자료
공백으로 구분된 문자열 가져오기
filter 사용법
배열에서 중복된 요소 제거
Reference
이 문제에 관하여(키워드로 배열의 요소 검색 [swift]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/boomboom/items/f196c3cd1f366d7d9623
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
// keyword分解用のextension
extension String {
var words: [String] {
return componentsSeparatedByCharactersInSet(.punctuationCharacterSet()).joinWithSeparator("").componentsSeparatedByString(" ").filter{!$0.isEmpty}
}
}
//すべてのテキストを入れる配列
var stringArray = ["this is a testString, please add your sentence.","I like apples", "Do you like apples?","今日はいい天気ですね", "はい、いい天気です","私はappleが好きです"]
//検索結果を入れる配列
var searchArray = [String]()
@IBOutlet var table: UITableView!
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
table.delegate = self
table.dataSource = self
table.reloadData()
}
//addボタン
@IBAction func add(sender: UIButton) {
if textField?.text == "" {
textAlert()
} else {
let newText = textField.text
stringArray.append(newText!)
print("全テキスト->",stringArray)
table.reloadData()
}
}
//searchボタン
@IBAction func search(sender: UIButton) {
if textField?.text == "" {
textAlert()
} else {
let keyWords = textField.text?.words
var preSearchArray = [String]()
print(keyWords)
for keyWord in keyWords! {
// keyWordを含むテキストをresultsに加える
let results = stringArray.filter{$0.containsString(keyWord)}
for result in results {
preSearchArray.append(result)
//重複する配列は除く
let removeOverlapResultArray = NSOrderedSet(array: preSearchArray)
searchArray = removeOverlapResultArray.array as! [String]
}
print("検索結果を入れる配列 ->",searchArray)
//もしキーワードに引っかかる検索が見つからなかった場合アラートを出す
if searchArray == [] {
let alert = UIAlertView()
alert.title = "アラート"
alert.message = "検索されたキーワードを含むテキストは存在しません"
alert.addButtonWithTitle("OK")
alert.show()
}
table.reloadData()
}
}
}
//clearボタン
@IBAction func clear (sender: UIButton) {
searchArray = []
textField.text?.removeAll()
table.reloadData()
}
func textAlert() {
let alert = UIAlertView()
alert.title = "アラート"
alert.message = "文字が入力されていません"
alert.addButtonWithTitle("OK")
alert.show()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchArray == [] {
return stringArray.count
} else {
return searchArray.count
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
if searchArray == [] {
cell.textLabel?.text = stringArray[indexPath.row]
} else {
cell.textLabel?.text = searchArray[indexPath.row]
}
return cell
}
여러 키워드(예를 들어 apple, 날씨)를 사용하여 검색할 때 apple이나 날씨를 포함하는 검색 결과를 표시합니다.앱과 날씨, 쌍방의 검색을 포함하려면 어떻게 해야 좋을까요?
나는 코드에 좋지 않은 점이 매우 많다고 생각한다.당신의 건의를 받을 수 있다면 다행입니다.
참고 자료
공백으로 구분된 문자열 가져오기
filter 사용법
배열에서 중복된 요소 제거
Reference
이 문제에 관하여(키워드로 배열의 요소 검색 [swift]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/boomboom/items/f196c3cd1f366d7d9623
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(키워드로 배열의 요소 검색 [swift]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/boomboom/items/f196c3cd1f366d7d9623텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)