小编Dru*_*man的帖子

Swift 4 JSON可解码最简单的解码类型更改方法

使用swift4的Codable协议,有很多级别的引擎日期和数据转换策略.

鉴于JSON:

{
    "name": "Bob",
    "age": 25,
    "tax_rate": "4.25"
}
Run Code Online (Sandbox Code Playgroud)

我想将它强制进入以下结构

struct ExampleJson: Decodable {
    var name: String
    var age: Int
    var taxRate: Float

    enum CodingKeys: String, CodingKey {
       case name, age 
       case taxRate = "tax_rate"
    }
}
Run Code Online (Sandbox Code Playgroud)

日期解码策略可以将基于字符串的日期转换为日期.

基于String的Float是否有某种功能

否则我一直坚持使用CodingKey引入一个String并使用计算得到:

    enum CodingKeys: String, CodingKey {
       case name, age 
       case sTaxRate = "tax_rate"
    }
    var sTaxRate: String
    var taxRate: Float { return Float(sTaxRate) ?? 0.0 }
Run Code Online (Sandbox Code Playgroud)

这种方式比我看起来需要更多的维护.

这是最简单的方式还是类似于DateDecodingStrategy用于其他类型的转换?

更新:我应该注意:我也走了超越的路线

init(from decoder:Decoder)
Run Code Online (Sandbox Code Playgroud)

但这是相反的方向,因为它迫使我为自己做这一切.

json swift swift4 codable

24
推荐指数
3
解决办法
1万
查看次数

UIView.animateWithDuration不动画Swift(再次)

注意:我已经检查了以下堆栈溢出问题:

27907570,32229252,26118141,31604300

我想要做的就是当一个按钮附带的IBAction调用时,在视图中淡化动画(通过alpha).然后在视图上的按钮被击中时反转.

我的皱纹可能是我在故事板视图中使用ViewDock上的辅助视图.视图在viewDidLoad时被添加到子视图中,其中框架/边界设置为与超级视图相同(用于完全停留)

这是作为叠加视图完成的原因,因为它是一个教程指示器.

结果(就像许多其他列出这个问题的人一样)是视图(和包含的控件)只是立即出现并立即消失.没有褪色.

我已尝试使用延迟,带有和不带完成,带有转换的animationWithDuration,甚至以旧的UIView.beginAnimations启动.

什么都行不通.建议热烈欢迎.

代码与我可以做到的一样简单:
编辑:将代码扩展到与
Edit2: TL 相关的所有内容; DR除了UIViewAnimateWithDuration之外,其他任何东西都可以工作,它似乎忽略了块和持续时间,只是直接运行内联代码UI更改.解决这个问题得到了赏金

@IBOutlet var infoDetailView: UIView! // Connected to the view in the SceneDock

override func viewDidLoad() {
    super.viewDidLoad()

    // Cut other vDL code that isn't relevant

    setupInfoView()
}

func setupInfoView() {
    infoDetailView.alpha = 0.0
    view.addSubview(infoDetailView)
    updateInfoViewRect(infoDetailView.superview!.bounds.size)
}

func updateInfoViewRect(size:CGSize) {
    let viewRect = CGRect(origin: CGPointZero, size: size)

    infoDetailView.frame = viewRect
    infoDetailView.bounds = viewRect

    infoDetailView.layoutIfNeeded()
    infoDetailView.setNeedsDisplay()
}

override func viewWillTransitionToSize(size: …
Run Code Online (Sandbox Code Playgroud)

animation uiviewanimation uiviewanimationtransition ios swift

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

EAAccessory/EASession在背景中拆解

使用Apple的EADemo作为基础我试图了解后台对EAAccessories的影响.

当我收到connectNotification时,我会收到附件,检查协议并获取流.使用流我设置委托,在RunLoop上安排,然后打开

目前,当我进入背景时,我将这一切都撕下来了.我退出了我所做的一切并释放了所有物品.

我也在didDisconnect上做了这个拆解.

在进入时,我并不总是得到didConnect,所以我走了connectedAccessory列表并检查适当的设备.

- = - = - = -

EA演示设置并删除视图上的会话,因此我们不会看到是否存在背景持久性.

EA演示代码似乎建议您可以拆除并返回,只要设备本身没有断开连接.

然而,当iOS设备睡眠或将应用程序置于后台并且设备将停止确认数据时,会话和设备有时似乎进入状态,或者更糟糕的是将停止将数据从流中拉出到流填充的点起来.


问题:使用后台时,除非我实际收到didDisconnect通知,否则我不应该拆除活动的会话/附件.有了这个,我假设Session和Accessory结构(也许是流)将在后台生存?

notifications bluetooth iphone-accessory ios4 ios

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

Xcode 7 ValidateEmbeddedBinary错误无法读取foo-WatchKit-App.app中的数据

我正在尝试使用WatchKit App在iOS应用程序上进行完整构建.

编译存档的完整项目时,我看到以下内容

ValidateEmbeddedBinary DerivedData/lifa93/Build/Intermediates/ArchiveIntermediates/lifa93Dev/BuildProductsPath/Release-iphoneos/lifa93.app/Watch/lifa93-WatchKit-App.app
    cd /Users/lordandrei/Projects/git/X7/lifa93
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    builtin-embeddedBinaryValidationUtility /Users/lordandrei/Projects/git/X7/lifa93/DerivedData/lifa93/Build/Intermediates/ArchiveIntermediates/lifa93Dev/BuildProductsPath/Release-iphoneos/lifa93.app/Watch/lifa93-WatchKit-App.app -signing-cert *9F…FB* -info-plist-path /Users/lordandrei/Projects/git/X7/lifa93/DerivedData/lifa93/Build/Intermediates/ArchiveIntermediates/lifa93Dev/InstallationBuildProductsLocation/Applications/lifa93.app/Info.plist

error: warning: Could not read data in /Users/lordandrei/Projects/git/X7/lifa93/DerivedData/lifa93/Build/Intermediates/ArchiveIntermediates/lifa93Dev/BuildProductsPath/Release-iphoneos/lifa93.app/Watch/lifa93-WatchKit-App.app
Run Code Online (Sandbox Code Playgroud)

我试过了:

  • 在Debug和Release之间切换
  • 切换无安装和无验证.
  • 撤销和替换所有配置文件(签名,adhoc,dist)

到目前为止,没有任何事情发生.

建议欢迎,因为我正在试图建立一个持有模式.

Xcode: Version 7.0 beta 3 (7A152u)
iOS: 9.0 beta 3 (13A4293g)    
Radar: 21975256
Run Code Online (Sandbox Code Playgroud)

xcode compiler-errors ios watchkit xcode7

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

我是如何在@ try/@ catch块崩溃的?

我收到了以下崩溃报告(截断)

Exception Type:  EXC_CRASH (SIGSEGV)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x36df00d8 __psynch_mutexwait + 24
1   libsystem_c.dylib               0x31760674 pthread_mutex_lock + 376
2   CoreFoundation                  0x31f2338a CFRunLoopWakeUp + 50
3   WebCore                         0x308d0bc8 _WebThreadRun + 284
4   UIKit                           0x37921c7a -[UIWebDocumentView _runLoadBlock:] + 38
5   UIKit                           0x37921c3a -[UIWebDocumentView _cleanUpFrameStateAndLoad:] + 114
6   UIKit                           0x37921bbe -[UIWebDocumentView loadHTMLString:baseURL:] + 78
Run Code Online (Sandbox Code Playgroud)

关注的是调用代码如下所示:

@try {
    [webView loadHTMLString:htmlString baseURL:nil];
    [webView setNeedsDisplay];     
}
@catch (NSException *exception) {...}
Run Code Online (Sandbox Code Playgroud)

那么,我是如何设法从异常处理程序中抛出异常的呢? …

exception-handling exception ios

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