我正在开发一个应用程序,我正在获取API响应并需要从中创建对象并将其放入数组中以便稍后使用。 API调用是在Objective-C中进行的,但是我的新对象是在Swift中创建的(它是一个主要使用Objective-C代码的旧应用程序)。
API调用本身工作正常,但是当我尝试将对象转换为对象时,没有制作对象。
这是目标代码(Swift):
import Foundation
@objc
class GCBOKSProductInfo: NSObject, NSCoding {
var featureName: String = ""
var available: Bool = false
static let sharedInstance = GCBOKSProductInfo()
override init() {
super.init()
}
init(featureName: String, available: Bool) {
super.init()
self.featureName = featureName
self.available = available
}
convenience required init?(coder decoder: NSCoder) {
guard let featureName = decoder.decodeObject(forKey: "featureName") as? String
else { return nil }
self.init(
featureName: featureName,
available: decoder.decodeBool(forKey: "available")
)
}
func encode(with aCoder: NSCoder) {
aCoder.encode(featureName, forKey: "featureName")
aCoder.encode(available, forKey: "available")
}
}
以下是我尝试从API响应中创建对象的地方:
NSMutableArray * result = [NSMutableArray arrayWithCapacity:[responseObject count]];
for (NSDictionary *boksProductInfoDict in responseObject) {
NSString *featureName = boksProductInfoDict[@"FeatureNaam"];
NSString *available = boksProductInfoDict[@"Beschikbaar"];
GCBOKSProductInfo *boksProductInfo = [[GCBOKSProductInfo alloc] initWithFeatureName:featureName available:available.boolValue];
[result addObject:boksProductInfo];
}
提取featureName和可用的工作(如果我在对象中放置一个断点,我看到它是正确的),但“boksProductInfo”似乎永远不会正确分配/初始化,所以当我将它添加到“result”数组条目中没有信息。
如果我试图点击“boksProductInfo”,我会得到这个:
ProjectName.GCBOKSProductInfo:0x60800005ee70
如果我尝试po“boksProductInfo.featureName”,我会得到这个:
错误:成员引用类型'GCBOKSProductInfo *'是一个指针;你的意思是使用' - >'吗?
错误:'GCBOKSProductInfo'类型的定义不完整 向前声明'GCBOKSProductInfo'
知道我可能错在哪里吗?