gpt4 book ai didi

iphone - 如何使用键值编码在 ABPerson 中设置属性值

转载 作者:行者123 更新时间:2023-12-03 21:12:24 26 4
gpt4 key购买 nike

给定这个键/值对:
名字=“史蒂夫”

我想在 iPhone 地址簿中设置 ABPerson 的属性,如下所示:ABRecordSetValue(person, kABPersonFirstNameProperty, @"Steve", nil);

问题是,我并不总是知道提交的 key 是什么。 (它相当于一个属性常量,前面没有“kABPerson”,后面没有“Property”)。提交的键可以是任意数量的属性:“JobTitle”、“Note”等。如何将该键转换为地址簿属性常量。即:
名字到 kABPersonFirstNameProperty

我想我可以使用键值编码,但我不知道在这种情况下如何实现它。

为了提高编码效率,我试图避免使用很长的 Switch 语句,或使用填充了每个可能的属性的数组。

更新

我在这里发现我需要通过字符串表示来访问常量。但我不知道这是否可能。因此,kABPersonJobTitleProperty 是一个等于 18 的常量。所以如果下面的代码有效的话我会很高兴:

  NSString *fieldName = [NSString stringWithString:@"JobTitle"];
NSString *propertyName = [NSString stringWithFormat:@"kABPerson%@Property", fieldName];<p></p>

<p>ABRecordRef person = ABPersonCreate();
ABRecordSetValue(person, propertyName, @"Fisherman", nil);</p>

当然,运行此命令会返回此警告传递“ABRecordSetValue”的参数 2 会在不进行强制转换的情况下从指针生成整数。因为字符串 propertyName 未解析为它正在查找的整数或常量。

有人能找到一种方法来实现这项工作吗?

我的设置与此处列出的问题类似:
Key-Value Coding

我正在获取我可以控制的 xml 数据,并将其转换为地址簿条目的属性。

最佳答案

这更多的是一个应用程序设计问题。在我看来,你所拥有的东西,你将需要一个“长 switch 语句”某处。也许最简洁的方法是在你自己发送的消息中签名如下:

- (ABPropertyID)recordPropertyFromMyEnum:(MyEnumType)属性

考虑一下:如果您唯一的枚举与 ABPropertyID 一对一排列,为什么不直接使用 ABPropertyID 呢?

关于iphone - 如何使用键值编码在 ABPerson 中设置属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com