标签: swift3

iOS swift如何在需要返回值的函数内等待异步任务

我正在使用swift 3.0并创建了一个返回整数数组的函数.整数数组非常具体,它们来自数据库,因此HTTP调用是异步的.这是一个功能,因为我在3个不同的控制器中使用它,所以写一次是有意义的.我的问题是在底部的return语句之后返回异步代码,因此返回nil.我在这里试过这个例子等待任务完成但是它不起作用主要是因为我需要返回值.这是我的代码

func ColorSwitch(label: [UILabel]) -> [Int] {

    for (index, _) in label.enumerated() {
       label[index].isHidden = true
    }

    // I need the value of this variable in the return
    // statement after the async is done
    var placeArea_id = [Int]()

    let urll:URL = URL(string:ConnectionString+"url")!

    let sessionn = URLSession.shared
    var requestt = URLRequest(url: urll)
    requestt.httpMethod = "POST"


    let group = DispatchGroup()
    group.enter()

    let parameterr = "http parameters"
    requestt.httpBody = parameterr.data(using: String.Encoding.utf8)
    let task =   sessionn.dataTask(with:requestt, completionHandler: {(data, response, error) …
Run Code Online (Sandbox Code Playgroud)

asynchronous ios swift nsurlsessiondatatask swift3

0
推荐指数
1
解决办法
3744
查看次数

按钮状态信息

这个问题类似于“如何从不同的viewController传递数据”,但是在这种情况下,我需要其他信息,我知道如何将数据从一个viewController传递给另一个viewController,但是我不知道如何告诉第二个viewController一个特定的信息。第一个视图中对象的状态。就我而言,在第一个视图中有一些按钮可以进入。

button.isHidden = true 
Run Code Online (Sandbox Code Playgroud)

点击之后,我想告诉第二个viewController哪些按钮被点击了,也许我要创建一个代表按钮状态的变量,但是我不知道该怎么做,有人可以帮助我吗?

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToLast" {

            guard let vc = segue.destination as? FinalClass else { return }

            let guest = segue.destination as! FinalClass

            if let user = sender as? User {


            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

用户可以像

 struct User {

    var button1 = Button1 tapped
    var button2 = Button2 tapped
    ecc.

    }
Run Code Online (Sandbox Code Playgroud)

ios swift swift3

0
推荐指数
1
解决办法
81
查看次数

货币代码返回nil

如下所示,对货币代码的简单请求应返回货币代码,但返回nil.我是否需要在申请货币代码之前设置区域,或者是否有我遗漏的东西.我在我的模拟器上使用Swift 3.1和Xcode 8.3.3 iphone 6和相同的结果.

    if let currencyCode = Locale.current.currencyCode {
        print(currencyCode)
    }
Run Code Online (Sandbox Code Playgroud)

swift swift3

0
推荐指数
1
解决办法
186
查看次数

界面构建器不允许添加表格视图单元格

对于警报对话框,我添加了一个UITableView,然后当我尝试对Table View Cell进行操作时,Interface Builders不接受将Table View Cell放在“ on”表视图上,请检查屏幕快照,我应该提到根是UIView,而不是UIViewController:

在此处输入图片说明

interface-builder uitableview ios swift3

0
推荐指数
1
解决办法
1360
查看次数

如何构建具有特定行数的表视图?

我一直在阅读类似的问题,直到现在都没有解决这个错误,或者我没有找到它.

我有一个TableView,我需要该表具有特定的行数.

现在它可以处理来自数组的通知计数.在这个数组中,我保留了来自服务器的通知.但我希望如果此数组计数大于40,则行数为40,它们不是数组的计数.

这是我的代码:

class ClassName: UITableViewController, UITabBarControllerDelegate {
    public var notifications: [APINotification] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tabBarController?.delegate = self
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 140
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewDidAppear(_ animated: Bool) {
        self.notifications = []
        self.getLastNotifications()
        APIAuth.shared.count_badge = 0
        self.tabBarController?.tabBar.items![0].badgeValue = nil
    }

    public func getLastNotifications() {
        let req = Notification()
        req.getLastNotifications(onComplete: {events in
            self.notifications = events

            DispatchQueue.main.async(execute: {
                self.tableView.reloadData()
            }) …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swift3

0
推荐指数
1
解决办法
80
查看次数

如何获取TableView的正确索引

我在TableView中有一个UILabel,并且UILabel附加到GestureRecognizer。我想做的是在标签点击时将UILabel的颜色更改为红色。现在,当我轻敲UILablel时,我非常接近,Label变为红色,但是错误的TableCell改变了颜色。如果我点击单元格3,那么我希望单元格3中的UILabel更改颜色,而不是单元格4或5。

class HomeProfilePlacesCell: NSObject {

    var CellCopy: HomeTVC?

    @objc func PostTap(_ sender: UIGestureRecognizer) {

         // This works but it often changes wrong cell
         CellCopy?.post.textColor = UIColor.red
    }

    func HomeProfilePlaceTVC(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, streamsModel : streamModel,HOMEPROFILE: HomeProfile, controller: UIViewController) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "HomeTVC", for: indexPath) as! HomeTVC
        CellCopy = cell

        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(PostTap(_:)))
        tapGesture.delegate = self as? UIGestureRecognizerDelegate

        cell.post.addGestureRecognizer(tapGesture)
        cell.post.text = streamsModel.Posts[indexPath.row]
        cell.post.tag = indexPath.row

        return cell 
    }
}
Run Code Online (Sandbox Code Playgroud)

再次,代码可以正常工作,我只需要找到一种方法即可将单击的单元格的索引路径传递到PostTap方法,以便它可以更改所点击的正确单元格的颜色。任何帮助或建议都会很棒。我不想使用“表刷新”,因为我仅在单击的单元格中更改了1个UILabel。

uitableview tableview ios swift swift3

0
推荐指数
1
解决办法
88
查看次数

迅速3/4冲刺到骆驼案(Snake to camelCase)

我试图对驼峰的情况进行简单的冲刺,所以:"这是我的身份"将成为swift 3(或4)中的"thisIsMyId".

无论我做什么,我找不到一个优雅的方式来做到这一点..:以下不起作用:

str.split(separator: "-").enumerated().map { (index, element) in
    return index > 0 ? element.capitalized : element
}.reduce("", +)
Run Code Online (Sandbox Code Playgroud)

它哭泣所有的东西.我相信有一个简单的方法......任何人?

swift swift3

0
推荐指数
2
解决办法
1864
查看次数

字典因应用程序崩溃而获得零值.在展开可选值时意外地发现了nil

我有一个名为messageDict的属性,有时它会因为该应用程序崩溃而获得nil值.有人可以建议我如何妥善处理它.

 var messageDict : [String : NSArray]?

if let messageDict = messageDict {
    let messageArray = messageDict[outBoxId]! as! [MCOIMAPMessage] // crash indicates here
}
Run Code Online (Sandbox Code Playgroud)

如果数据可用,我将存储在数据下面.有时它会是零

Message-ID: CABQG1ZJT0a7=NExme6VWA6iRpe6Du5LViuA9kZf-QbqOyX1RfQ@mail.gmail.com

References: [dca79b0a-ea55-a4f6-aef3-9097559148f5@peoplelogic.in,CABQG1ZKpat9nGSOjs-Q341bmn0vkiVH+CdFpu2JgkC92KO_K=Q@mail.gmail.com]

In-Reply-To: [CABQG1ZKpat9nGSOjs-Q341bmn0vkiVH+CdFpu2JgkC92KO_K=Q@mail.gmail.com]
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swift3 swift4

0
推荐指数
1
解决办法
103
查看次数

无法将“ AppDelegate”分配给“ UNUserNotificationCenterDelegate”

我正在关注本教程:https : //medium.com/flawless-app-stories/ios-remote-push-notifications-in-a-nutshell-d05f5ccac252

但是由于某种原因,我越来越

无法将“ AppDelegate”分配给“ UNUserNotificationCenterDelegate”。

那条线是做什么的?如果我将其注释掉,其余代码将正常工作,并且如果用户希望允许通知,则会提示用户。

func registerForPushNotifications() {
    UNUserNotificationCenter.current().delegate = self // line in question
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
        (granted, error) in
        print("Permission granted: \(granted)")
        // 1. Check if permission granted
        guard granted else { return }
        // 2. Attempt registration for remote notifications on the main thread
        DispatchQueue.main.async {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swxmlhash swift3 xcode9

0
推荐指数
1
解决办法
616
查看次数

如何动态创建控件并在swift 4中动态对齐?

我正在使用Swift 4开发iOS应用程序.在该项目中我有要求,我必须动态创建控件以及正确的对齐方式.

例如,当我点击该按钮时,我有一个按钮,我正在接受服务,因为我正在获取包含4个对象的json数据.基于此我必须动态创建控件,动态对齐也应该这样做.我尝试了很多例子和教程.我没有找到任何解决方案.

uitextfield ios swift3

0
推荐指数
1
解决办法
184
查看次数