由于未捕获的异常“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 语句,但仍然在这里崩溃。有什么解决办法吗?
任何帮助,将不胜感激。
我目前正在构建一个应用程序作为个人项目,该项目依赖于从服务器获取数据。我可以成功获取数据,但在尝试解码时遇到麻烦。我面临的问题是,在从服务器收到某些对象之前,我不知道它们的密钥。我得到的数据如下所示:
{
"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)
任何人可以提供的任何帮助将不胜感激。提前致谢。
我正在开发应用程序,在其中显示 UITableView。UITableView 顶部有一个按钮过滤器。现在,单击该按钮时,我想要对 UIVIEW 进行动画处理,使其从屏幕右侧到屏幕左侧进行动画处理。并且它必须一直保持动画状态,直到达到屏幕宽度的 70%。
现在这样做会使上一个视图变得更暗,我想让外观和感觉与 Android 中的导航抽屉相同。但这只会显示该 UIView 中的过滤器设置。
我搜索了一下,有太多的库无法执行我想要的任务,但我想自己编写代码并为 UIView 或 Nib 设计设置动画来执行此操作。
无论如何,有没有办法在不使用任何库或任何东西的情况下执行我想要的操作?请让我知道我正在等待。提前致谢。
我试图在Demo ARKit应用程序中使用苹果提供的代码进行平面检测,但它不能始终如一地工作,在某些情况下它会完美地检测到表面,但在某些情况下,它不会检测到飞机.然后,我也注意到在Demo ARKit app中,平面检测也会发生同样的事情.当它检测到平面时,黄色方块会关闭,但每次都不是这样.有没有人面对同样的?如何使这种平面检测行为保持一致?
我做了30个文本框,并var scrollview: UIScrollView在viewDidLoad()和我试图拉升整体向上滚动视图时,键盘盖文本框。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) 我正在使用新的ReactiveCocoa + ReactiveSwift编写Swift.我正在尝试使用新的ReactiveCocoa框架执行以下操作(在ReactiveCocoa 2.5中):
[[RACObserve(user, username) skip:1] subscribeNext:^(NSString *newUserName) {
// perform actions...
}];
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我仍然无法弄清楚如何做到这一点.请帮忙!非常感谢你!
我收到许多随机问题。大多像某些结构无法解码,无法理解如何定义结构。
请发现代码被截断
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) 我目前不确定如何解决这个问题.基本上我有一个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) 如何将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中处理日期方面仍在努力
我有这样的代码
let index = tableView.selectedRowIndexes.map { Int($0) }
arrDomains.remove(at: index)
Run Code Online (Sandbox Code Playgroud)
但得到错误:
无法将'[Int]'类型的值转换为预期的参数类型'Int'
如何将[Int]转换为int?
Swift 4,macOS
swift4 ×10
ios ×6
swift ×5
arkit ×1
codable ×1
date ×1
decodable ×1
json ×1
jsonparser ×1
math ×1
nsexpression ×1
rest ×1
try-catch ×1
uiscrollview ×1
uitableview ×1
uiview ×1
xcode9 ×1
xcode9-beta ×1