【发布时间】:2021-12-26 21:31:03
【问题描述】:
我的界面如下所示:#import
#import <AVFoundation/AVFoundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface AVBase : NSObject
@property NSString *portName;
@property NSString *uid;
@property NSString* port;
- (id) initWithPortName:(NSString *)portName andUID:(NSString *)uid andPort:(AVAudioSessionPort)port;
@end
NS_ASSUME_NONNULL_END
还有.m 文件
@implementation AVBase
- (id)initWithPortName:(NSString *)portName andUID:(NSString *)uid andPort:(AVAudioSessionPort)port
{
self = [super init];
if (self)
{
self.portName = portName;
self.uid = uid;
self.port = [port description];
}
return self;
}
@end
我想为 AVAudioSession 创建一个当前输出数组,所以我这样做:
NSMutableArray *myArray = [[NSMutableArray alloc] init];
AVAudioSession *session = AVAudioSession.sharedInstance;
NSArray *outputs = [[session currentRoute] outputs];
for(AVAudioSessionPortDescription* output in outputs)
{
AVBase* av = [AVBase alloc];
av = [av initWithPortNumber:output.portName andUID:output.UID andPort:output.portType];
[myArray addObject:av];
}
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myArray options:NSJSONWritingPrettyPrinted error:&error];
但是当我尝试序列化 myArray 时,我收到一条错误消息:
Exception 'Invalid type in JSON write (AVBase)
我不明白出了什么问题,我类中的所有属性都是 NSString 类型,所以它应该可以工作。
【问题讨论】:
标签: ios objective-c