将NSCFString转换为NSString
我正在从服务器获取字典
myDictionary = { "rank":"1", "color":"red", "position":"middle" }
现在我想在if条件下检查关键“位置”的值
我正在这样做
if ([[myDictionary valueForKey:@"position"] isEqualToString:@"middle"]) { //do Some stuff } else{ //do some other stuff }
但[myDictionary valueForKey:@"position"]
数据types是_NSCFString
,所以它不会正确地比较值,如果循环,即使值正确,也不会进入。
我如何将它转换成NSString
以便我可以比较它在条件?
我看到了这些问题
NSString实例将其类作为NSCFString报告
从NSCFString获取NSString
xcode中的NSString或NSCFString?
从这些问题中我才知道, NSString
实际上是一个不同types的string对象的容器类。 一般来说,一个NSString构造函数确实返回一个实际types为NSCFString
的对象,这是一个围绕Core Foundation CFString
struct
的薄包装。
但他们没有帮助我..没有人实际告诉如何转换成NSString,所以请不要标记为重复。
您不需要将_NSCFString
转换为NSString
。 作为NSString
的子类,它将保证响应-isEqualToString:
和NSString
其他所有方法)。 你的问题不是来自string,可能是来自myDictionary
。 尝试logging字典中的所有密钥,并确保其行为与预期一致。
CFString
s可以根据文档转换为NSString
NSString与Core Foundation的CFStringRef是“免费桥接”。 有关免费桥接的更多信息,请参阅“免费桥接” 。
NSString *nsString = @"Hello"; CFStringRef cfString = (CFStringRef) nsString;
你真的想弄清楚为什么价值观是不平等的。 分开你的方法调用:
NSString *positionValue = myDictionary[@"position"]; NSLog(@"Position value: %@", positionValue); if ([positionValue isEqualToString:@"middle"]) { // do Some stuff } else{ // do some other stuff }
- 通过CocoaPods添加Google Maps for iOS的Swift项目中的链接器错误
- 用嵌套类型命名Swift代码
- 如何从通过MKAnnotationView添加的button获取点击事件
- 在新的iOS项目上反应本机未处理的JSexception:TypeError
- 如何使用complicationController的sendMessage唤醒iOS父应用程序
- NSSortDescriptor与任意sorting
- 坚持UITableView标题视图顶部时,故事板中创build标题
- 使用Xcode 9更改组织以在iTunes Connect上上传二进制文件
- “发生了ssl错误,并且无法build立与服务器的安全连接”,仅在手机上连接到Internal Development Server