从NSCFString获取NSString

win*_*cki 4 iphone casting objective-c ios

我在周围阅读并对Google做了一点点但是我无法找到问题的答案......

我有一个NSDictionary返回NSCFString's,我需要的是一个NSString,以便我可以使用它的doubleValue函数.我不能为我的生活弄清楚如何把我NSCFString的变成NSStrings.我试过以下但没有成功:

NSString* lng_coord = (NSString*)[dict objectForKey:key];
            if ([lng_coord class] == [NSString class])
                NSLog(@"lng coord is an exact match with NSString class");
            else {
                NSLog(@"lng coord doesn't match NSString class");
                NSLog(@"The class of lng_coord is %@", [[dict objectForKey:key] class]);
            }
            NSLog(@"%@", lng_coord);
            [CelebsAnnotation setLongitude:[lng_coord doubleValue]];
Run Code Online (Sandbox Code Playgroud)

这是控制台的输出:

lng coord doesn't match NSString class
The class of lng_coord is NSCFString
49.2796758
Run Code Online (Sandbox Code Playgroud)

Geo*_*che 12

NSCFString是一个私有子类NSString,你可以只使用它.

由于像类集群这样的模式,你不应该直接比较这里的类 - -isKindOfClass:改为使用:

if ([lng_coord isKindOfClass:[NSString class]]) {
    // ...
Run Code Online (Sandbox Code Playgroud)