javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

ios-Swi中让让分配在何处使用

Swift手册第61页的Swift文档暗示了使用where来连接具有常规条件的可选绑定的可能性。 但是,当我这样做时,我有一个警告建议我用以下代码中的逗号代替where

if let geocodingError = error as? NSError where geocodingError.code == 2
trans by 2019-11-07T23:22:55Z

iOS-使用Swift 3在UIView上添加Shadow

之前的Swift 3我在UIView中添加了阴影,如下所示:

//toolbar is an UIToolbar (UIView)
toolbar.layer.masksToBounds = false
toolbar.layer.shadowOffset = CGSize(width: -1, height: 1)
toolbar.layer.shadowRadius = 1
toolbar.layer.shadowOpacity = 0.5

但是上面的代码在swift 3中不起作用,而不是阴影,我的整个视图的颜色变成了丑陋的灰色

有谁知道我们如何在Swift 3中添加阴影?

trans by 2019-11-07T20:43:09Z

在iOS Swi中将NSDate转换为字符串

这个问题在这里已有答案:

  • 将NSDate转换为NSString                                     14个答案

我正在尝试将NSDate转换为String,然后更改格式。 但是,当我将NSDate传递给String时,它会产生空白。

 let formatter = DateFormatter()
 let myString = (String(describing: date))
 formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
 let yourDate: Date? = formatter.date(from: myString)
 formatter.dateFormat = "dd-MMM-yyyy"
 print(yourDate)
trans by 2019-10-27T11:49:50Z

swift3-Swift 3 UnsafePointer($ 0)不再在Xcode 8 beta 6中编译

我的代码段如下:

    let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
    }

……不再编译出现以下我不理解的错误:

"'init' is unavailable: use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type."

该如何解决?

trans by 2019-10-07T01:28:51Z

目标c-未调用didReceiveRemoteNotification,iOS 10

在iOS 9.3中,以下两种情况都会调用didReceiveRemoteNotification方法。

1)收到推送通知时2)当用户通过点击通知启动应用程序时。

但是在iOS 10上,我注意到当用户通过点击通知启动应用程序时,不会启动didReceiveRemoteNotification方法。 仅在收到通知时调用。 因此,从通知启动应用程序后,我无法采取任何进一步的措施。

该如何解决? 任何想法?

trans by 2019-10-03T17:03:30Z

swift-如何解决“字符串插值为可选值生成调试描述;您是要明确显示它?” 在Xcode 8.3 beta中?

从beta 8.3开始,成千上万的警告“字符串内插会为可选值生成调试描述;您是要明确显示它吗?” 出现在我的代码中。

例如,在以下情况下会弹出警告,其中选项可能会导致无效:

let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)"

按照之前的设计,对于我(和编译器)来说,可以将可选值插值为“ nil”是可以的。 但是编译器改变了主意。

编译器建议的是添加一个具有以下描述的String构造函数:

let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)"

显然,结果在我看来是明确的,但也非常麻烦。 有更好的选择吗? 我是否必须解决所有这些警告,或者更好地等待下一个Beta?

Screenshot for description

trans by 2019-09-24T20:12:03Z

ios - “%不可用:使用truncatingRemainder”是什么意思?

我在使用扩展代码时遇到以下错误,我不确定他们是否要求使用不同的运算符或根据互联网搜索修改表达式中的值。

错误:%不可用:改为使用truncatingRemainder

扩展代码:

extension CMTime {
    var durationText:String {
        let totalSeconds = CMTimeGetSeconds(self)
        let hours:Int = Int(totalSeconds / 3600)
        let minutes:Int = Int(totalSeconds % 3600 / 60)
        let seconds:Int = Int(totalSeconds % 60)

        if hours > 0 {
            return String(format: "%i:%02i:%02i", hours, minutes, seconds)
        } else {
            return String(format: "%02i:%02i", minutes, seconds)
        }
    }
}

设置分钟和秒变量时会发生错误。

trans by 2019-09-19T09:21:21Z

ios - Swift 3上的NotificationCenter问题

这个问题在这里已有答案:

  • NSVotificationCenter在Swift中添加了addObserver                                     12个答案

我正在学习Swift 3而我正在尝试使用NSNotificationCenter.这是我的代码:

func savePost(){
    let postData = NSKeyedArchiver.archivedData(withRootObject: _loadedpost)
    UserDefaults.standard().object(forKey: KEY_POST)
}
func loadPost(){
    if let postData = UserDefaults.standard().object(forKey: KEY_POST) as? NSData{
        if let postArray = NSKeyedUnarchiver.unarchiveObject(with: postData as Data) as? [Post]{
                _loadedpost = postArray
        }
    }
    //codeerror
    NotificationCenter.default().post(NSNotification(name: "loadedPost" as NSNotification.Name, object: nil) as Notification)
}

这是观察者:

override func viewDidLoad() {
    super.viewDidLoad()
//codeerorr
    NotificationCenter.default().addObserver(self, selector: Selector(("onPostLoaded")), name: "loadedPost", object: nil)
}

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

它总是给我错误"信号SIGBRT"。 当我尝试在观察者中更改名称时,这不是错误,但显然它没有显示任何内容。 我该如何解决?

trans by 2019-08-24T16:27:36Z

ios - Swift 3 - 设备令牌现在被解析为'32BYTES'

我刚刚从Xcode 7更新到8 GM并且在Swift 3兼容性问题中我注意到我的设备令牌已停止工作。 他们现在只读了32BYTES'。

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
    print(deviceToken) // Prints '32BYTES'
    print(String(data: deviceToken , encoding: .utf8)) // Prints nil
}

在更新之前,我能够简单地将NSData发送到我的服务器,但现在我很难实际解析令牌。

我在这里想念的是什么?

编辑:我只是测试转换回NSData,我看到了预期的结果。 所以现在我对新的数据类型感到困惑。

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
    print(deviceToken) // Prints '32BYTES'
    print(String(data: deviceToken , encoding: .utf8)) // Prints nil

    let d = NSData(data: deviceToken)
    print(d) // Prints my device token
}
trans by 2019-08-23T14:27:31Z

swift3 - 在swi中没有换行符

在swift 2.0中,print()会自动添加换行符。 在swift 1.2,println()print()中曾经是单独的函数。 因此,如何打印一些文本而不添加换行符,因为swift不再具有不附加换行符的打印功能。

trans by 2019-08-19T15:38:12Z

swift - 关闭使用非转义参数可能允许它转义

我有一个协议:

enum DataFetchResult {
    case success(data: Data)
    case failure
}

protocol DataServiceType {
    func fetchData(location: String, completion: (DataFetchResult) -> (Void))
    func cachedData(location: String) -> Data?
}

通过示例实现:

    /// An implementation of DataServiceType protocol returning predefined results using arbitrary queue for asynchronyous mechanisms.
    /// Dedicated to be used in various tests (Unit Tests).
    class DataMockService: DataServiceType {

        var result      : DataFetchResult
        var async       : Bool = true
        var queue       : DispatchQueue = DispatchQueue.global(qos: .background)
        var cachedData  : Data? = nil

        init(result : DataFetchResult) {
            self.result = result
        }

        func cachedData(location: String) -> Data? {
            switch self.result {
            case .success(let data):
                return data
            default:
                return nil
            }
        }

        func fetchData(location: String, completion: (DataFetchResult) -> (Void)) {

            // Returning result on arbitrary queue should be tested,
            // so we can check if client can work with any (even worse) implementation:

            if async == true {
                queue.async { [weak self ] in
                    guard let weakSelf = self else { return }

                    // This line produces compiler error: 
                    // "Closure use of non-escaping parameter 'completion' may allow it to escape"
                    completion(weakSelf.result)
                }
            } else {
               completion(self.result)
            }
        }
    }

上面的代码在Swift3(Xcode8-beta5)中编译和工作,但不再适用于beta 6。 你能指出我的根本原因吗?

trans by 2019-08-08T05:04:38Z

nsnotificationcenter - 如何在Swift 3中创建自定义通知?

在Objective-C中,自定义通知只是一个简单的NSString,但在WWDC版本的Swift 3中它并不明显。

trans by 2019-08-07T00:26:00Z

ios - 如何使用Swift 3.0中的NotificationCenter和swift 2.0中的NSNotificationCenter传递数据?

我正在我的swift ios应用程序中实现messageInfo

目前在几个面板上我正在监听服务器并等待收到的消息。 我是通过调用每个面板中的messageInfo函数来实现的:

func getChatMessage(){
    SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            //do sth depending on which panel user is
        })
    }
}

但是我注意到这是一个错误的方法,我需要更改它 - 现在我想开始只收听一次传入消息,当任何消息到来时 - 将此消息传递给任何监听它的面板。

所以我想通过NSNotificationCenter传递传入的消息。 到目前为止,我能够传递发生的事情的信息,但不能传递数据本身。 我是这样做的:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)

然后我有一个叫做的函数:

func showSpinningWheel(notification: NSNotification) {
}

任何时候我想打电话给我:

NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)

那么如何传递对象messageInfo并将其包含在被调用的函数中?

trans by 2019-08-05T09:39:53Z

swift - 如何将类型应用于NSFetchRequest实例?

在Swift 2中,以下代码正在运行:

let request = NSFetchRequest(entityName: String)

但是在Swift 3中它给出了错误:

无法推断通用参数“ResultType”

因为Level现在是通用类型。 他们在文件中写道:

let request: NSFetchRequest<Animal> = Animal.fetchRequest

所以,如果我的结果类是例如Level,我应该如何正确请求?

因为这不起作用:

let request: NSFetchRequest<Level> = Level.fetchRequest
trans by 2019-07-31T15:42:53Z

xcode - 'var'参数已弃用,将在Swift 3中删除

好吧所以我只是将Xcode更新为7.3,现在我收到了这个警告:

&#39;无功&#39; 参数已弃用,将在Swift 3中删除

当我需要在此函数中使用var时,如何解决这个问题:

public func getQuestionList(var language: String) -> NSArray {
    if self.data.count > 0 {
        if (language.isEmpty) {
            language = "NL"
        }
        return self.data.objectForKey("questionList" + language) as! NSArray
    }

    return NSArray()
}
trans by 2019-07-08T21:29:42Z

ios - 在Xcode 8 / Swift 3.0中注册推送通知?

我试图让我的应用程序在Xcode 8.0中运行,并且遇到了错误。 我知道这个代码在以前的swift版本中运行良好,但是我假设在新版本中代码已经改变了。 这是我尝试运行的代码:

let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil)     
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.shared().registerForRemoteNotifications()

我得到的错误是&#34;参数标签&#39;(forTypes:,categories:)&#39; 不匹配任何可用的重载&#34;

是否有一个不同的命令,我可以尝试使其工作?

trans by 2019-07-08T16:50:37Z

正确解析Swift 3中的JSON

我正在尝试获取JSON响应并将结果存储在变量中。 我已经在Swift的早期版本中使用了此代码的版本,直到GM版本的Xcode 8发布。 我看了一下StackOverflow上的一些类似的帖子:Swift 2解析JSON - 无法下标Swift 3中的'AnyObject'和JSON解析类型的值。

但是,似乎那里传达的想法并不适用于这种情况。

如何在Swift 3中正确解析JSON响应?在Swift 3中读取JSON的方式有什么变化吗?

以下是有问题的代码(它可以在游乐场中运行):

import Cocoa

let url = "https://api.forecast.io/forecast/apiKey/37.5673776,122.048951"

if let url = NSURL(string: url) {
    if let data = try? Data(contentsOf: url as URL) {
        do {
            let parsedData = try JSONSerialization.jsonObject(with: data as Data, options: .allowFragments)

        //Store response in NSDictionary for easy access
        let dict = parsedData as? NSDictionary

        let currentConditions = "\(dict!["currently"]!)"

        //This produces an error, Type 'Any' has no subscript members
        let currentTemperatureF = ("\(dict!["currently"]!["temperature"]!!)" as NSString).doubleValue

            //Display all current conditions from API
            print(currentConditions)

            //Output the current temperature in Fahrenheit
            print(currentTemperatureF)

        }
        //else throw an error detailing what went wrong
        catch let error as NSError {
            print("Details of JSON parsing error:\n \(error)")
        }
    }
}

编辑:以下是print(currentConditions)之后API调用的结果示例

["icon": partly-cloudy-night, "precipProbability": 0, "pressure": 1015.39, "humidity": 0.75, "precipIntensity": 0, "windSpeed": 6.04, "summary": Partly Cloudy, "ozone": 321.13, "temperature": 49.45, "dewPoint": 41.75, "apparentTemperature": 47, "windBearing": 332, "cloudCover": 0.28, "time": 1480846460]
trans by 2019-06-27T04:43:43Z

swift - 非''@ objc'方法不满足'@objc'p的可选要求

概述:

  • 我有一个协议P1,它提供了Objective-C可选功能之一的默认实现。
  • 当我提供可选功能的默认实现时,会出现警告

编译器警告:

Non-'@objc' method 'presentationController(_:viewControllerForAdaptivePresentationStyle:)' does not satisfy optional requirement of '@objc' protocol 'UIAdaptivePresentationControllerDelegate'

版:

  • 斯威夫特:3
  • Xcode:8(公开发布)

尝试:

  • 尝试添加@objc但没有帮助

题:

  • 我该如何解决这个问题?
  • 有工作吗?

码:

@objc protocol P1 : UIAdaptivePresentationControllerDelegate {

}

extension P1 where Self : UIViewController {

    func presentationController(_ controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? {
        return UIViewController()
    }
}


class A : UIViewController, P1 {

}
trans by 2019-06-21T06:56:03Z

ios - 如何检查Swift 3中的当前线程?

如何检查哪一个是Swift 3中的当前线程?

在Swift的早期版本中,可以通过执行以下操作来检查当前线程是否是主要线程:

NSThread.isMainThread()
trans by 2019-06-21T02:32:34Z

swift3 - 来往D的往返Swift数字类型

随着Swift 3倾向于Data而不是[UInt8],我试图找出最有效/惯用的编码/解码方式将各种数字类型(UInt8,Double,Float,Int64等)作为数据对象。

对于使用[UInt8]有这个答案,但它似乎使用了我在Data上找不到的各种指针API。

我想基本上一些自定义扩展看起来像:

let input = 42.13 // implicit Double
let bytes = input.data
let roundtrip = bytes.to(Double) // --> 42.13

真正逃避我的部分,我通过一堆文档查看,是如何从任何基本结构(所有数字都是)获得某种指针的东西(OpaquePointer或BufferPointer或UnsafePointer?)。 在C中,我只是在它前面拍一个&符号,然后就去了。

trans by 2019-06-20T10:31:13Z

上一页 1 2 3 4 下一页 共4页