iphone - NSString的initWithData :encoding: return type issue

标签 iphone objective-c cocoa cocoa-touch

我有几行简单的代码,如下所示:

NSData *dataReply;
NSString *stringReply;
dataReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
stringReply = [[NSString alloc] initWithData:dataReply encoding:NSUTF8StringEncoding];

这里的问题是, initWithData:encoding: 并不像文档声称的那样返回 NSString 的实例。我也尝试过使用 (NSString *) 进行显式转换,但运气不佳。当我尝试将 stringReply 传递给我编写的类型不匹配的方法时,这会给我编译器警告。鉴于我将所有警告视为错误,我真的很想了解 stringReply 返回的内容以及如何强制它为 NSString 类型。

最佳答案

当您尝试在另一个位置使用 stringReply 时,编译器发出的“类型不匹配”与从 initWithData:encoding: 返回的对象无关,而与随后使用 stringReply 的位置有关。

例如,如果执行此操作时遇到类型不匹配的情况:

SomeClass *someObject;
NSString *stringReply;
stringReply = [[NSString alloc] initWithData:dataReply encoding:NSUTF8StringEncoding];
[someObject methodWithString:stringReply];

问题不是 initWithData:encoding: 返回错误的类型,而是以下之一:

  • methodWithString:实际上并不接受 NSString*
  • methodWithString:在使用之前未正确声明/包含

如果 SomeClass 在头文件中前向声明(作为 @class SomeClass)但随后从未包含在实现文件中,则通常会发生第二种情况。

关于iphone - NSString的initWithData :encoding: return type issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/338598/

相关文章:

iphone - 垂直对齐 UILabel 中的文本

ios - UILocalNotification 声音不会停止播放

objective-c - tableview,更改焦点 tvos 的字体颜色

c++ - CocoaPod 中的 C++ 头文件无法从框架导入

objective-c - NSOutlineView 中文件夹和子文件夹的对象模型

objective-c - 从 NSArray 返回自动释放对象?

iphone - iPhone Voip中的扬声器电话功能

iphone - 所选注释的问题

objective-c - Apple 魔术鼠标 API

objective-c - 测试屏幕保护程序是否正在运行或工作区是否已锁定