标签: swift4

检查表达式是否有效

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法解析格式字符串“12+6+ == 1””

我想验证表达式是否有效。我正在尝试使用以下代码:

let equationString = "12+6+"

do {
    let expr =  try NSExpression(format: equationString)
    if let result = expr.expressionValue(with: nil, context: nil) as? NSNumber {
        let x = result.doubleValue
        print(x)
    } else {
        print("failed")
    }
}
catch {
    print("failed")
}
Run Code Online (Sandbox Code Playgroud)

我已经使用了 try-catch 语句,但仍然在这里崩溃。有什么解决办法吗?

任何帮助,将不胜感激。

math try-catch nsexpression swift4

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

Swift 4.2 解码对象未知键

我目前正在构建一个应用程序作为个人项目,该项目依赖于从服务器获取数据。我可以成功获取数据,但在尝试解码时遇到麻烦。我面临的问题是,在从服务器收到某些对象之前,我不知道它们的密钥。我得到的数据如下所示:

{
    "result": 0,
    "id": 1,
    "error": null,
    "data": {
        "UNKOWN_KEY": {
            "knownKey": "test",
            "knownKey": "test",
            "knownKey": "test",
        },
        "UNKOWN_KEY": {
            "knownKey": "test",
            "knownKey": "test",
            "knownKey": "test",
        },
        "UNKOWN_KEY": {
            "knownKey": "test",
            "knownKey": "test",
            "knownKey": "test",
        },
        "UNKOWN_KEY": {
            "knownKey": "test",
            "knownKey": "test",
            "knownKey": "test",
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于我的一生,我无法弄清楚如何解码这些UNKOWN_KEYs,它阻止了我的进步。我尝试过使用以下内容:

let dynamicContainer = try decoder.container(keyedBy: DeviceDataKey.self)

for key in dynamicContainer.allKeys {
    if let deviceData = try? dynamicContainer.decode(ACDeviceData.self, forKey: key) {
        data.insert(deviceData, at: 0)
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人可以提供的任何帮助将不胜感激。提前致谢。

rest json ios swift4 decodable

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

将 UIView 从屏幕右侧滑向左侧

我正在开发应用程序,在其中显示 UITableView。UITableView 顶部有一个按钮过滤器。现在,单击该按钮时,我想要对 UIVIEW 进行动画处理,使其从屏幕右侧到屏幕左侧进行动画处理。并且它必须一直保持动画状态,直到达到屏幕宽度的 70%。

现在这样做会使上一个视图变得更暗,我想让外观和感觉与 Android 中的导航抽屉相同。但这只会显示该 UIView 中的过滤器设置。

我搜索了一下,有太多的库无法执行我想要的任务,但我想自己编写代码并为 UIView 或 Nib 设计设置动画来执行此操作。

无论如何,有没有办法在不使用任何库或任何东西的情况下执行我想要的操作?请让我知道我正在等待。提前致谢。

uiview ios swift4

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

ARKit平面检测

我试图在Demo ARKit应用程序中使用苹果提供的代码进行平面检测,但它不能始终如一地工作,在某些情况下它会完美地检测到表面,但在某些情况下,它不会检测到飞机.然后,我也注意到在Demo ARKit app中,平面检测也会发生同样的事情.当它检测到平面时,黄色方块会关闭,但每次都不是这样.有没有人面对同样的?如何使这种平面检测行为保持一致?

swift4 xcode9-beta arkit

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

键盘多次出现时,Scrollview不会向上移动

我做了30个文本框,并var scrollview: UIScrollViewviewDidLoad()和我试图拉升整体向上滚动视图时,键盘盖文本框。Delegate的文本字段和scrollview已经设置。此代码(下面向下)有效,并且第一次出现键盘时scrollview会向上移动,但是问题是,当第二次或更多次打开键盘时,scrollview不会向上移动,我一直无法解决问题几个小时。谁能在我的代码中检测到一些错误并给出正确答案?我期待任何帮助!

我写的代码是这样的:

var activeField: UITextField?

func registerForKeyboardNotifications(){
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notificaiton:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}

func deregisterForKeyboardNotifications(){
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.removeObserver(self, name:NSNotification.Name.UIKeyboardWillHide, object: nil)
}

@objc func keyboardWasShown(notificaiton: NSNotification){
    var info = notificaiton.userInfo!
    let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
    let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height, 0.0)
    var aRect: CGRect = view.frame
    aRect.size.height -= keyboardSize!.height

    if let activeField = activeField{
        if !aRect.contains(activeField.frame.origin) == …
Run Code Online (Sandbox Code Playgroud)

uiscrollview ios swift swift4

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

如何使用ReactiveCocoa观察Swift中的属性发生了变化

我正在使用新的ReactiveCocoa + ReactiveSwift编写Swift.我正在尝试使用新的ReactiveCocoa框架执行以下操作(在ReactiveCocoa 2.5中):

[[RACObserve(user, username) skip:1] subscribeNext:^(NSString *newUserName) {
    // perform actions...
}];
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我仍然无法弄清楚如何做到这一点.请帮忙!非常感谢你!

reactive-cocoa swift reactive-swift swift4

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

在Swift 4中使用codable解析嵌套数组

我收到许多随机问题。大多像某些结构无法解码,无法理解如何定义结构。

请发现代码被截断

var JSON = """
{"variants":{"variant_groups":[{"group_id":"1","name":"Crust","variations":[{"name":"Thin","price":0,"default":1,"id":"1","inStock":1},{"name":"Thick","price":0,"default":0,"id":"2","inStock":1,"isVeg":1},{"name":"Cheese burst","price":100,"default":0,"id":"3","inStock":1,"isVeg":1}]},{"group_id":"2","name":"Size","variations":[{"name":"Small","price":0,"default":1,"id":"10","inStock":1,"isVeg":0},{"name":"Medium","price":100,"default":0,"id":"11","inStock":1,"isVeg":1},{"name":":Large","price":200,"default":0,"id":"12","inStock":1,"isVeg":0}]},{"group_id":"3","name":"Sauce","variations":[{"name":"Manchurian","price":20,"default":0,"id":"20","inStock":1,"isVeg":0},{"name":"Tomato","price":20,"default":0,"id":"21","inStock":1,"isVeg":1},{"name":"Mustard","price":20,"default":0,"id":"22","inStock":1,"isVeg":0}]}],"exclude_list":[[{"group_id":"1","variation_id":"3"},{"group_id":"2","variation_id":"10"}],[{"group_id":"2","variation_id":"10"},{"group_id":"3","variation_id":"22"}]]}}
""".data(using: .utf8)

/* 
 not sure is this the right way to define Root
*/
    struct Root : Codable {

        let variants : varientStruct
        let exclude_list : exclude_list

    }

    struct exclude_list : Codable{
        let variation_id : String
        let group_id : String
    }

    struct varientStruct: Codable {
        let variant_groups = [variant_groups_struct]
    }
    struct variant_groups_struct : Codable {
        let group_id : String
        let name :String
        let variations: [variationsStruct]
    }

    struct variationsStruct :Codable {
        let name …
Run Code Online (Sandbox Code Playgroud)

ios swift4 xcode9 codable jsonparser

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

TableView删除HTTP中的行删除Closure Swift

我目前不确定如何解决这个问题.基本上我有一个tableview,我可以通过滑动删除数据.以下是受影响线的代码.

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

    if editingStyle == .delete {
        // Delete the row from the data source

        guard let id = CastService.instance.datsSource[indexPath.row].id else {return}

        CastService.instance.deleteCast(id: id, completion: { (success) in

            if success {
                // Have the below line and that crashes. I believe this is because database has already removed the data
                tableView.deleteRows(at: [indexPath], with: .fade)

                // Added below line to see if reloading data does anything, however nothing happened, data …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift swift4

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

Swift-从月,日,年组件中获取日期

如何将DateComponents转换为Date对象。目前,我有以下代码

Calendar.date(from: DateComponents(year: 2018, month: 1, day: 15))
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误说明 "No 'date' candidates produce the expected contextual result type 'Date'

抱歉,这个基本问题很严重,但是我仍然在如何在Swift中处理日期方面仍在努力

date ios swift swift4

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

如何将[Int]转换为int?

我有这样的代码

let index = tableView.selectedRowIndexes.map { Int($0) }
        arrDomains.remove(at: index)
Run Code Online (Sandbox Code Playgroud)

但得到错误:

无法将'[Int]'类型的值转换为预期的参数类型'Int'

如何将[Int]转换为int?

Swift 4,macOS

swift swift4

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