2015-03-25 145 views
0

在一個項目有已經ObjC,我加入了斯威夫特類無法找到「ABPeoplePickerNavigationControllerDelegate」

import AddressBookUI 
class MyVC : UITableViewController, ABPeoplePickerNavigationControllerDelegate { 
} 

MyApp的-Swift.h協議聲明:289:42:找不到協議聲明「ABPeoplePickerNavigationControllerDelegate」 ;你的意思是'UINavigationControllerDelegate'?

不,斯威夫特,我的意思是ABPeoplePickerNavigationControllerDelegate。真的不知道我在做什麼錯在這裏...

+0

檢查這個https://developer.apple.com/library/ios/documentation/AddressBookUI/Reference/ABPeoplePickerNavigationControllerDelegate_Protocol/ – Ajumal 2015-03-25 10:42:11

+0

你以爲我沒有?自2008年以來,我一直在使用AB框架...... Swift中的某些內容有點不同 - 它可能與AB無關,但通常我不明白Swift/ObjC中的某些內容。 – 2015-03-25 11:07:54

+0

只需導入一個swift文件名稱MyVC,並使用上面的代碼,不要將上面的代碼放在頭文件中。 – 2015-03-25 11:15:04

回答

1

我需要在我的Briding-Header.h添加

#import <AddressBookUI/AddressBookUI.h> 

。有人可以認爲我的Swift文件中的import就足夠了。不是。

這就是說,現在實行

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier) { 
} 

時,我有一個新的問題又來了一個錯誤:

-Swift.h:297:110:預期一類

ABRecord型號有問題

didSelectPerson:(ABRecord) 

如果我還在Briding Header或Swift File中導入AddressBook,則不起作用。

+0

whay是你在你的頭文件中加入了這個stuf – 2015-03-25 11:05:49

1

您可以檢查我用here

純斯威夫特項目中的代碼,沒有Objective-C的參與

對我來說,這是編制精細,而無需使用任何橋接報頭

import UIKit 
import AddressBook 
import AddressBookUI 

class ViewController: UITableViewController, ABPeoplePickerNavigationControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier) { 


    } 
} 

我將相關框架(AddressBook,AddressBookUI)添加到鏈接二進制庫我的目標階段

adding relevant frameworks

Objective-C的項目,與橋接報

我轉職Header.h:

#import <AddressBook/AddressBook.h> 
#import <AddressBookUI/AddressBookUI.h> 
  • 確保您的橋接,標題是你的目標
  • 正確引用

Bridging-Header

  • 迅速VC代碼是與上述相同的
+0

你有沒有在你的項目中使用ObjC,或者這是Swift嗎? – 2015-03-25 11:16:09

+0

這僅僅是我爲了測試你的問題而創建的一個純Swift示例項目。您是否遇到了Objective-C項目的這個問題? – 2015-03-25 11:17:01

+0

是的。我會更新我原來的帖子以反映這一點。 – 2015-03-25 11:17:34

0

固定我第二問題由於@neonacho on Twitter。我不得不使用ABRecordRef進行編譯,而不是ABRecord。不知道爲什麼迭戈的代碼工作,而不是我的。所以它變成了

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, 
             didSelectPerson person: ABRecordRef!, property: ABPropertyID, identifier: ABMultiValueIdentifier) { 
} 

它工作。