将 NSString 存储在 NSDIctionary 中时,变量不是 CFString
Posted
技术标签:
【中文标题】将 NSString 存储在 NSDIctionary 中时,变量不是 CFString【英文标题】:Variable is not a CFString when storing NSString in a NSDIctionary 【发布时间】:2012-06-18 11:56:57 【问题描述】:我将聊天应用程序中的消息存储在 NSDictionary 中。但是,如果我这样做了
NSString *msg = [[message elementForName:@"body"] stringValue];
[m setObject:msg forKey:@"msg"];
它抱怨说(调试时)“变量不是 CFString”并且 msg 变为 nil。所以,我把它改成:
CFStringRef cfstring=(__bridge CFStringRef) msg;
[m setObject:(__bridge NSString*) cfstring forKey:@"msg"];
但是“msg”仍然是 nil,它不应该是 nil。
这只发生在它发送消息时。当它收到它们时......没有问题!
有什么帮助吗?
【问题讨论】:
elementForName:
返回什么?
收到的邮件正文。
但它是一个字符串吗?当身体空虚时会发生什么?等等。
是的,它是一个字符串。当它尝试向字典添加空值时,它会崩溃。
我在发送前检查发送的字符串的值是否>1。
【参考方案1】:
您不应该使用objectForKey
而不是elementForName
吗?如果对象是NSString
,则存储时您不需要使用stringValue
。您绝对不必担心免费桥接到 CFStringRef,这只是编译器看到的底层 C 数据类型
【讨论】:
以上是关于将 NSString 存储在 NSDIctionary 中时,变量不是 CFString的主要内容,如果未能解决你的问题,请参考以下文章
将 NSNumber* 的 NSArray 存储为 Core Data 中的 NSString
将 NSString 中的文件名转换为 UIImage 以获取存储在资产库中的照片
创建持久存储时 NSPersistentDocument 崩溃
InvalidFirebaseData Swift 3 只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。