首页 > 解决方案 > 如何从目标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。

我怎样才能做到这一点?任何帮助表示赞赏。

标签: iosobjective-c

解决方案


您可以使用: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.datajson.error


推荐阅读