gpt4 book ai didi

ios - 'NSDictionary ?' is not convertible to ' NSCopying'

转载 作者:行者123 更新时间:2023-11-28 13:09:30 28 4
gpt4 key购买 nike

我正在尝试将以下代码转换为 Swift

- (id)init {
self = [super init];

if (self) {
// Fetch Current Configuration
NSBundle *mainBundle = [NSBundle mainBundle];
self.configuration = [[mainBundle infoDictionary] objectForKey:@"Configuration"];

// Load Configurations
NSString *path = [mainBundle pathForResource:@"Configurations" ofType:@"plist"];
NSDictionary *configurations = [NSDictionary dictionaryWithContentsOfFile:path];

// Load Variables for Current Configuration
self.variables = [configurations objectForKey:self.configuration];
}

return self;
}

这是 Swift 版本:

private var configuration: String?
private var properties: NSDictionary?

init() {
println("Load configurations")
let mainBundle = NSBundle.mainBundle()
self.configuration = mainBundle.infoDictionary?["Configuration"] as? String

let path = mainBundle.pathForResource("Configurations", ofType: "plist")

var configurations = NSDictionary(contentsOfFile: path!)
self.properties = configurations[configuration!] as? NSDictionary
}

但是最后一行给了我两个编译错误:

Configuration.swift:25:27: 'NSDictionary?' is not convertible to 'NSCopying'
Configuration.swift:25:14: Cannot assign to immutable value of type 'NSDictionary?'

我尝试了对代码进行各种修改,as!NSMutableDictionary 等。但就是无法编译。有什么建议吗?

最佳答案

您的 configurations 字典是可选的,因此您必须在使用时打开它,因此请替换此行:

self.properties = configurations[configuration!] as? NSDictionary

用这一行:

self.properties = configurations![configuration!] as? NSDictionary

您需要在使用可选词典时添加!

或者你可以使用安全的 if let 来做到这一点:

if let config = configurations![configuration!] as? NSDictionary {
self.properties = config
}

关于ios - 'NSDictionary ?' is not convertible to ' NSCopying',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31870037/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com