ios - 如何从目标c中的方法返回不同类型的数据
问题描述
我是目标 c 的新手。我有一个 mainViewController 类,我创建了另一个对象类。我在 mainViewController 的 .h 文件中声明另一个类。我用
#import <Foundation/Foundation.h>
#import "OtherClass.h"
NS_ASSUME_NONNULL_BEGIN
@interface ViewController : UIViewController
@property (strong, nonatomic) OtherClass *jsonData;
@end
NS_ASSUME_NONNULL_END
然后我从 mainViewController .m 文件中调用其他类的函数。
该方法返回 NSMutableArray 并且可以正常工作。但是有可能会发生错误,因此它可能不会返回 NSMutableArray 而是返回 NSError。我需要该类将错误返回给 mainViewController。
我怎样才能做到这一点?任何帮助表示赞赏。
解决方案
您可以使用:id jsonData
而不是OtherClass *jsonData
:
@property (strong, nonatomic) OtherClass *jsonData;
=>
@property (strong, nonatomic) id jsonData;
然后做
if ([jsonData isKindOfClass: [OtherClass class]])
{
}
else if ([jsonData isKindOfClass: [NSError class]])
{
}
else
{
//It's none
}
但也许你想拥有 2 个属性,可能更容易使用 just if (jsonData) {}
or if (jsonError) {}
?
@property (strong, nonatomic) OtherClass *jsonData;
@property (strong, nonatomic) NSError *jsonError;
另一种可能性是将其嵌入到自定义对象中:
@interface ResponseData: NSObject
@property (strong, nonatomic) OtherClass *data;
@property (strong, nonatomic) NSError *error;
@end
接着:
@interface ViewController : UIViewController
@property (strong, nonatomic) ResponseData *json;
@end
并检查json.data
或json.error
?
推荐阅读
- kubernetes - [cloud-running-a-container]:在默认命名空间中找不到资源
- javascript - 使用 RegExp 突出显示字符串中的匹配字符
- mysql - SQL:选择给定日期时间的每一天的最后一条记录
- javascript - 当特定属性与其他对象匹配时,比较相同数组的对象并将它们的某些属性分组
- botium-box - Botium - 如何在 botium-bindings 中获取机器人消息
- google-maps - 来自 Google 表格数据的地理编码
- python - 在python中的for循环期间保存迭代次数
- swift - 删除 UITextDocumentProxy 中突出显示的文本
- github-actions - Github Action 中的作业是否已经可以访问其 repo 内容?
- python-3.x - 优化 BigQuery 资源的使用,使用 Google Dataflow 从 GCS 加载 200 万个 JSON 文件