NSArray objectAtIndex 不起作用。请帮忙
NSArray* address = [NSArray arrayWithArray:[detailItem addressArray]];
NSLog(@"address = %@", address);
NSString* addressToString = @"";
int arrayCount = [address count];
for (int i = 0; i < arrayCount; i++) {
addressToString = [addressToString stringByAppendingString:[address objectAtIndex:i]];
if (i == arrayCount -1) {
addressToString = [addressToString stringByAppendingString:@""];
} else {
addressToString = [addressToString stringByAppendingString:@", "];
}
}
地址是一个 NSArray,它保存一个地址,
2010-06-23 09:05:19.346 iPhoneExample[1093:207] address = (
{
City = "Cupertino";
Country = "United States";
CountryCode = us;
State = CA;
Street = "1 Infinite Loop";
ZIP = 95014;
}
)
我正在尝试遍历该数组并创建一个 CSV 字符串,因此它看起来像
Cupertino, "United States", us, CA, "1 Infinite Loop", 95014
但是,我一直在
addressToString = [addressToString stringByAppendingString:@", "];
收到的消息已
*** -[NSCFDictionary stringByAppendingString:]: unrecognized selector sent to instance 0x1c2f10
更新时崩溃: DetailItem 是 ABContact 类型的对象(自定义类)。
ABContact 有一个名为addressArray 的属性,
@property (nonatomic, readonly) NSArray *addressArray;
我的addressArray 的定义是
- (NSArray *) addressArray {return [self arrayForProperty:kABPersonAddressProperty];}
NSArray* address = [NSArray arrayWithArray:[detailItem addressArray]];
NSLog(@"address = %@", address);
NSString* addressToString = @"";
int arrayCount = [address count];
for (int i = 0; i < arrayCount; i++) {
addressToString = [addressToString stringByAppendingString:[address objectAtIndex:i]];
if (i == arrayCount -1) {
addressToString = [addressToString stringByAppendingString:@""];
} else {
addressToString = [addressToString stringByAppendingString:@", "];
}
}
address is an NSArray that holds an address
2010-06-23 09:05:19.346 iPhoneExample[1093:207] address = (
{
City = "Cupertino";
Country = "United States";
CountryCode = us;
State = CA;
Street = "1 Infinite Loop";
ZIP = 95014;
}
)
I'm trying to go thru the array and create a CSV string so it would look like
Cupertino, "United States", us, CA, "1 Infinite Loop", 95014
However, I keep crashing on
addressToString = [addressToString stringByAppendingString:@", "];
Message I get is
*** -[NSCFDictionary stringByAppendingString:]: unrecognized selector sent to instance 0x1c2f10
UPDATED:
detailItem is an object of type ABContact (custom class).
ABContact has a property called addressArray
@property (nonatomic, readonly) NSArray *addressArray;
the definition of my addressArray is
- (NSArray *) addressArray {return [self arrayForProperty:kABPersonAddressProperty];}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你的“地址”是 NSDictionary 的 NSArray,而不是 NSArray 的 NSArray。
要以数组形式获取字典的值,您可以使用,
但没有顺序保证。我认为你真正需要的是:
Your "address" is an NSArray of NSDictionary, not an NSArray of NSArray.
To get the values of the dictionary as an array, you can use
but there is no guarantee on the order. And I think what you actually need is:
这
是一个 NSDictionary< /a>.您将需要使用
[dictionary objectForKey:'City']
访问其成员,因此,更新后的代码应为:
This:
Is a NSDictionary. You will want to access its members with
[dictionary objectForKey:'City']
So, your updated code should read:
如果您可以更改您的
addressArray
方法以实际返回一个数组而不是字典,那么您可以这样做:就是这样......
If you could change your
addressArray
method to actually return an array instead of a dictionary, then you could do:And that's it...