연락처 테이블 뷰 컨트롤러에서 연락처 식별자를 다른 위치 테이블 뷰 컨트롤러로 전달합니다. 그래서 delegate ContactSelectionDelegate를 정의하고 Location tableview controller에서 userSelectedContact 메소드를 구현하고 contactIdentifierString을 얻습니다.핵심 데이터에서 fetchRequest와 함께 술어를 사용하는 방법
데이터베이스를 검색하여 contactIdentifierString과 일치하는 것을 찾고 다른 속성 공급자 이름의 값을 찾습니다. 여기에는 전체 데이터베이스 검색이 포함됩니다. 프리디 케이트를 fetchRequest 컨텍스트에 할당함으로써 더 빠른 방법이 존재합니다. 나는 그것이 더 빠르고 더 적은 코드 라인이 될 것이라고 생각했다.
연락처 fetchRequest와 함께 술어를 사용하는 방법을 제안 할 수 있습니까?
ContactTableViewController 코드 :
protocol ContactSelectionDelegate{
func userSelectedContact(contactIdentifier:NSString)
}
class ContactTableViewController: UITableViewController {
var delegate:ContactSelectionDelegate? = nil
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if (delegate != nil){
let contactDict:NSDictionary = allContacts.object(at: indexPath.row) as! NSDictionary
let identifier = contactDict.object(forKey: "uniqueId")
delegate!.userSelectedContact(contactIdentifier: identifier as! NSString)
self.navigationController!.popViewController(animated: true)
}
}
}
LocationTableViewController 코드 : 모든
class LocationTableViewController: UITableViewController, ContactSelectionDelegate, CLLocationManagerDelegate {
var contactIdentifierString:NSString = NSString()
func userSelectedContact(contactIdentifier: NSString) {
var fetchedResults: [Contact] = []
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
fetchedResults = try context.fetch(Contact.fetchRequest())
}
catch {
print ("fetch task failed")
}
if fetchedResults.count > 0 {
for contact in fetchedResults{
let aContact:Contact = contact
if (aContact.uniqueId! == contactIdentifierString as String) {
providerName.text = aContact.providerName
}
else {
continue
}
}
}
}
포함하는
NSManagedObject
서브 클래스Contact
가 있다고 가정 : "Ambiguoius의 fetchrequest 사용". let fetchRequest = Contact.fetchRequest() – vraolet req : NSFetchRequest = Contact.fetchRequest(). 이제 오류가 발생합니다 : 선언되지 않은 형식의 NSFetchRequest 사용. NSManagedObject 하위 클래스가없는 것 같습니다. 그래서 생성 된 NSManagedObject 두 하위 항목 모두에 대한 하위 클래스. Contact + CoreDataProperties.swift 내 연락처 엔티티에서 "연락처가이 컨텍스트에서 유형 조회에 모호합니다"라는 오류가 표시됩니다. NSManagedObject 클래스가 자동 생성 될 수 있습니다. 오류가있는 순환. 너 pl 할 수 있니? 설명하고 수정하는 방법? –
vrao
'providerName'이 점 표기법으로 액세스되기 때문에 NSManagedObject 서브 클래스를 사용하고 있다고 가정합니다. 서브 클래스는 fetchRequest() 메소드를 포함해야한다. 나는 대답을 업데이트했다. – vadian