所以我可以说:

NSString *stringObject = (__bridge NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
NSLog(@"%@", [stringObject class]); - RETURNS "(null)"

这怎么可能?您如何解决这样的问题?

我试图返回一个空字符串,以防该字符串为“(null)”。

我试过了:
 NSString *lastName = ![stringObject isEqual:@"(null)"] ? stringObject : [NSString string];

要么
NSString *lastName = ![stringObject isEqualToString:@"(null)"] ? stringObject : [NSString string];

要么
NSString *lastName = ![stringObject isEqual:[NSNull null]] ? stringObject : [NSString string];

要么
NSString *lastName = [stringObject isKindOfClass:[NSString class]] ? [NSString string] : stringObject ;

要么
NSString *lastName = (stringObject  == nil) ? [NSString string] : stringObject ;

还有其他建议吗?
先感谢您。

最佳答案

该联系人没有姓氏,因此stringObjectnil。用一些代码验证:

NSLog(@"Last name='%@'", stringObject);

编辑如何验证:

只需测试对象是否为nil,最好还是检查字符串是否具有length > 0,您可以像这样简单地进行操作:
NSString *stringObject = (__bridge NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if ([stringObject length]) {
    NSLog(@"Contact last name = '%@'", stringObject);
} else {
    NSLog(@"Contact has no last name; they must play for Brazil");
}

关于ios - iOS-[stringObject类]从电话联系人返回“(null)”?这怎么可能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25119161/

10-08 23:54