【问题标题】:Incompatible pointer type: How can I use a CFType derived object within NSObject derived collection objects?不兼容的指针类型:如何在 NSObject 派生集合对象中使用 CFType 派生对象?
【发布时间】:2009-03-11 15:51:29
【问题描述】:

我正在尝试在 NSMutableArray 中使用 ABRecordRef,但它似乎不起作用。我知道 ABRecord 是一个 C 类,但我认为 ABRecordRef 是围绕 Objective-C 类的工作,它允许我将它与 NSObjects 一起使用。我需要做什么才能完成这项工作?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    “不工作”是什么意思?比如,你得到编译或运行时错误?

    正如我在对另一张海报的回复中指出的那样,您不能在 iPhone 上使用 Objective-C API(也没有真正的 ABrecord 类可以桥接)。

    一般来说,使用 iPhone 上的地址簿内容复制出您感兴趣的元素,并将复制的值保存在字典之类的东西中,这是一个非常好的主意。如果您需要保存所有元素,则必须有读取 AddressBook.h 头文件中定义的每个值的代码,没有 API 方法可以通用地遍历记录。

    还请记住,如果用户退出您的应用并返回,他们可能会随时更改地址簿 - 因此,如果您要存储值,请注意他们重新启动应用后所做的更改!

    【讨论】:

    • 我收到编译警告和运行时错误。哪个词典? NSDictionary?
    • 是的,NSDictionary - 我使用类似的东西,所以我可以在“@name”键下保存一个名称。对于电话号码或电子邮件地址之类的内容,我将它们保存为更多字典的数组,每个字典都有一个“@email”和@“label”键来保存各个值。
    • 感谢您的提示,我认为 struct 是可桥接的,即使没有类。如果 Apple 为 iPhone 采用与 Core Foundation 中相同的代码,它本来可以的。
    • 是的,这确实让我搞砸了 gs,iPhone SDK 与 OSX 相似但不同。我会试试肯德尔所说的。
    • 桥接类中可能发生的事情比看起来的要多,但老实说,移植整个 Objc 通讯簿覆盖似乎很容易......您可以为模拟器编译 OS X 代码,以便使用手机没有的类。
    猜你喜欢
    • 2017-03-09
    • 2021-07-02
    • 2014-06-16
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多