gpt4 book ai didi

ios - 迁移到 Swift 2 时出错 : Invalid conversion from throwing function of type to non-throwing function type and use of undeclared type

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:56 25 4
gpt4 key购买 nike

我正在尝试将 Swift 2 语法用于 try...do...catch 以进行错误处理,但在尝试修改我的代码后,我遇到了一些我无法弄清楚的错误。在此先感谢您的帮助。

在 dispatch_async 行,错误:从类型 '() throws -> ()' 到非抛出函数类型 'dispatch_block_t'(又名 '@convention(block) () -> () 的无效转换').

稍后在代码中,关于“let resultArray.NSArray”...我收到错误“使用未声明的类型 NSArray”。

func searchFlickrForString(searchStr:String, completion:(searchString:String!, FlickrPhotos:NSMutableArray!, error:NSError!)->()){
let searchURL:String = FlickrHelper.URLForSearchString(searchStr)

let queue:dispatch_queue_t = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

dispatch_async(queue, {

var error:NSError?

let searchResultString:String! = try String(contentsOfURL: NSURL(fileURLWithPath: searchURL), encoding: NSUTF8StringEncoding)
do {
// Parse JSON Response
let jsonData:NSData! = searchResultString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

let resultDict:NSDictionary! = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! NSDictionary
do {
let status:String = resultDict.objectForKey("stat") as! String
if status == "fail" {
let error:NSError? = NSError(domain: "FlickrSearch", code: 0, userInfo: [NSLocalizedFailureReasonErrorKey:resultDict.objectForKey("message")!])

completion(searchString: searchStr, FlickrPhotos: nil, error: error)
} else {
let resultArray:NSArrray = resultDict.objectForKey("photos").objectForKey("photo") as NSArray

let flickrPhotos:NSMutableArray = NSMutableArray()

for photoObject in resultArray{
let photoDict:NSDictionary = photoObject as NSDictionary

var flickrPhoto:FlickrPhoto = FlickrPhoto()
flickrPhoto.farm = photoDict.objectForKey("farm") as Int
flickrPhoto.server = photoDict.objectForKey("farm") as String
flickrPhoto.secret = photoDict.objectForKey("farm") as String
flickrPhoto.photoID = photoDict.objectForKey("farm") as String

let searchURL:String = FlickrHelper.URLForFlickrPhoto(flickrPhoto, size: "m")
//download image
let imageData:NSData = NSData(contentsOfURL: searchURL, options: nil)

}
}
} catch let error as NSError{
completion(searchString: searchStr, FlickrPhotos: nil, error: error)
}
} catch {
//completion(searchString: searchStr, FlickrPhotos: nil, error: error)
}


})

}

最佳答案

要修复第一个错误,先移动第一个

do {

直属

dispatch_async(queue

对于您的第二个错误:将您的代码更改为

let resultArray = resultDict.objectForKey("photos")!.objectForKey("photo") as! NSArray

同时将每个“as”替换为“as!”

将 searchURL 声明更改为:

let searchURL = NSURL(string: FlickrHelper.URLForFlickrPhoto(flickrPhoto, size: "m"))

关于ios - 迁移到 Swift 2 时出错 : Invalid conversion from throwing function of type to non-throwing function type and use of undeclared type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465226/

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