标签: swift3

如何在Swift 3中创建调度队列

在Swift 2中,我能够使用以下代码创建队列:

let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT)
Run Code Online (Sandbox Code Playgroud)

但这不能在Swift 3中编译.

在Swift 3中写这个的首选方法是什么?

grand-central-dispatch ios swift3 xcode8 dispatch-after

393
推荐指数
6
解决办法
32万
查看次数

Swift中的'open'关键字是什么?

ObjectiveC.swift从标准库文件包含大约228行代码下面几行:

extension NSObject : Equatable, Hashable {
  /// ...
  open var hashValue: Int {
    return hash
  }
}
Run Code Online (Sandbox Code Playgroud)

open var在这种情况下意味着什么,或者open一般来说关键字是什么?

syntax declaration modifier swift swift3

308
推荐指数
3
解决办法
9万
查看次数

如何编写Swift 3中的延迟

在早期版本的Swift中,可以使用以下代码创建延迟:

let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 4 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
    //put your code which should be executed with a delay here
}
Run Code Online (Sandbox Code Playgroud)

但现在,斯威夫特3时,Xcode自动改变6个不同的东西,但随后出现以下错误:"无法转换DispatchTime.now到预期值dispatch_time_t又名UInt64".

如何在Swift 3中运行一系列代码之前创建延迟?

xcode ios swift swift3 dispatch-after

299
推荐指数
5
解决办法
22万
查看次数

CGRectMake,CGPointMake,CGSizeMake,CGRectZero,CGPointZero在Swift中不可用

将代码转换为最新的swift 3.0后,我显示此错误.

在此输入图像描述在此输入图像描述

还告诉我解决方案 CGSize = CGSizeMake(0,0)

static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
Run Code Online (Sandbox Code Playgroud)

哪个也不可用.

uikit swift3 ios10 xcode8

237
推荐指数
7
解决办法
16万
查看次数

如何在Swift 3,Swift 4及更高版本中dispatch_sync,dispatch_async,dispatch_after等?

我在Swift 2.x(甚至1.x)项目中有很多代码,如下所示:

// Move to a background thread to do some long running work
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
    let image = self.loadOrGenerateAnImage()
    // Bounce back to the main thread to update the UI
    dispatch_async(dispatch_get_main_queue()) {
        self.imageView.image = image
    }
}
Run Code Online (Sandbox Code Playgroud)

或者像这样的东西来延迟执行:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
    print("test")
}
Run Code Online (Sandbox Code Playgroud)

或者Grand Central Dispatch API的各种其他用途......

现在我已经在Swift 3的Xcode 8(beta)中打开了我的项目,我得到了各种各样的错误.其中一些提供修复我的代码,但并非所有修复产生工作代码.我该怎么办?

libdispatch grand-central-dispatch dispatch-async swift swift3

230
推荐指数
6
解决办法
18万
查看次数

如何在Swift中提供具有错误类型的本地化描述?

我正在使用Swift 3语法定义自定义错误类型,我想提供一个用户友好的错误描述,该描述由对象的localizedDescription属性返回Error.我该怎么做?

public enum MyError: Error {
  case customError

  var localizedDescription: String {
    switch self {
    case .customError:
      return NSLocalizedString("A user-friendly description of the error.", comment: "My error")
    }
  }
}

let error: Error = MyError.customError
error.localizedDescription
// "The operation couldn’t be completed. (MyError error 0.)"
Run Code Online (Sandbox Code Playgroud)

有没有办法让localizedDescription我返回我的自定义错误描述("用户友好的错误描述.")?请注意,此处的错误对象是类型Error而不是MyError.当然,我可以将对象强制转换为MyError

(error as? MyError)?.localizedDescription
Run Code Online (Sandbox Code Playgroud)

但是有没有办法让它工作而不会转换为我的错误类型?

error-handling nslocalizedstring swift swift3

175
推荐指数
4
解决办法
4万
查看次数

根据Swift中的String计算出UILabel的大小

我试图根据不同的字符串长度计算UILabel的高度.

func calculateContentHeight() -> CGFloat{
    var maxLabelSize: CGSize = CGSizeMake(frame.size.width - 48, CGFloat(9999))
    var contentNSString = contentText as NSString
    var expectedLabelSize = contentNSString.boundingRectWithSize(maxLabelSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFontOfSize(16.0)], context: nil)
    print("\(expectedLabelSize)")
    return expectedLabelSize.size.height

}
Run Code Online (Sandbox Code Playgroud)

以上是我用来确定高度但不起作用的当前功能.我非常感谢能得到的任何帮助.我会在Swift中给出答案而不是Objective C.

string iphone uilabel ios swift3

167
推荐指数
5
解决办法
11万
查看次数

命令行工具 - 错误 - xcrun:错误:无法找到实用程序"xcodebuild",无法找到开发人员工具或在PATH中

SwiftJSON通过Carthage Dependency Manager为Some Xcode项目构建框架时获取错误.

Sivaramaiahs-Mac-mini:GZipDemoApp vsoftMacmini5 $ carthage更新 - 平台iOS

***获取GzipSwift

***获取SwiftyJSON

***在"3.1.1"查看GzipSwift

***在"3.1.3"下载SwiftyJSON.framework二进制文件

***xcodebuild输出可以在/var/folders/7m/y0r2mdhn0f16zz1nlt34ypzr0000gn/T/carthage-xcodebuild.apLXCc.log中找到

shell任务(/ usr/bin/xcrun xcodebuild -project /Users/vsoftMacmini5/Desktop/GZipDemoApp/Carthage/Checkouts/GzipSwift/Gzip.xcodeproj CODE_SIGNING_REQUIRED = NO CODE_SIGN_IDENTITY = CARTHAGE = YES -list)失败,退出代码为72:

xcrun:错误:无法找到实用程序"xcodebuild",而不是开发人员工具或PATH

installation command-line gzip carthage swift3

165
推荐指数
2
解决办法
4万
查看次数

试试!试试?有什么区别,什么时候使用?

Swift 2.0中,Apple引入了一种处理错误的新方法(do-try-catch).几天前在Beta 6中引入了更新的关键字(try?).另外,知道我可以使用try!.3个关键字之间有什么区别,何时使用?

error-handling swift swift2 swift3

162
推荐指数
1
解决办法
4万
查看次数

Swift 3 URLSession.shared()对成员'dataTask(with:completionHandler :)的错误引用错误(bug)

你好我有工作json解析swift2.2的代码,但当我用它为Swift 3.0给我错误

ViewController.swift:132:31:对成员'dataTask(with:completionHandler :)'的模糊引用

我的代码在这里

   let listUrlString =  "http://bla.com?batchSize=" + String(batchSize) + "&fromIndex=" + String(fromIndex)
    let myUrl = URL(string: listUrlString);
    let request = NSMutableURLRequest(url:myUrl!);
    request.httpMethod = "GET";

    let task = URLSession.shared().dataTask(with: request) {
        data, response, error in

        if error != nil {
            print(error!.localizedDescription)
            DispatchQueue.main.sync(execute: {
                AWLoader.hide()
            })

            return
        }

        do {

            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSArray

            if let parseJSON = json {

                var items = self.categoryList

                items.append(contentsOf: parseJSON as! [String])

                if self.fromIndex < items.count { …
Run Code Online (Sandbox Code Playgroud)

json ios swift3

162
推荐指数
5
解决办法
10万
查看次数