小编Jan*_*Jan的帖子

从Swift中的Dictionary <String,AnyObject>中提取字符串值

我只想从Swift中的json响应中提取一些字符串值,但我找不到一种简单的方法来实现它.

var result: Dictionary<String, AnyObject> = [ "name" : "Steve", "surname" : "Jobs"]

if let name = result["name"] {
    //Warning: Constant 'name' inferred to have 'AnyObject', which may be unexpected
}

if let name = result["name"] as String {
    //Error: (String, AnyObject) is not convertible to String
}
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?

干杯

swift

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

在Swift中将数据读入结构

我正在尝试使用该方法将其读Data入Swift 4 .问题structwithUnsafeBytes

网络UDP数据包具有以下格式:

data: 0102 0A00 0000 0B00 0000

01           : 1 byte : majorVersion      (decimal 01)
02           : 1 byte : minorVersion      (decimal 02)
0A00 0000    : 4 bytes: applicationHostId (decimal 10)
0B00 0000    : 4 bytes: versionNumber     (decimal 11)
Run Code Online (Sandbox Code Playgroud)

然后我有一个扩展Data,需要一个startlength几个字节来读取

extension Data {
    func scanValue<T>(start: Int, length: Int) -> T {
        return self.subdata(in: start..<start+length).withUnsafeBytes { $0.pointee }
    }
}
Run Code Online (Sandbox Code Playgroud)

这在逐个读取值时正常工作:

// correctly read as decimal "1"
let …
Run Code Online (Sandbox Code Playgroud)

swift

3
推荐指数
2
解决办法
929
查看次数

Fastlane 匹配构建 adhoc 和应用商店

我正在使用 Fastlane matchgym来构建我的应用程序并将其从 CI (Bitrise) 分发到 Fabric。我的 Xcode 设置设置为手动,并使用 AdHoc 配置文件进行发布配置,如Fastlane 文档中所述

\n\n

现在我想从 CI 分发到 Appstore,但它失败了,因为 XcodeRelease配置设置为使用 AdHoc 配置文件,并且 Match 安装了 AppStore 配置文件。

\n\n
+---------------------------------------------------------------+-----------------------------------------------------------------------------+\n|                                                           Summary for gym 2.112.0                                                           |\n+---------------------------------------------------------------+-----------------------------------------------------------------------------+\n| scheme                                                        | AeroNavMap                                                                  |\n| export_method                                                 | app-store                                                                   |\n| export_xcargs                                                 | -allowProvisioningUpdates                                                   |\n| export_options.provisioningProfiles.net.tequilaapps.airnavmap | match AppStore net.tequilaapps.airnavmap                                    |\n| workspace                                                     | ./PEMap.xcworkspace                                                         |\n| destination                                                   | generic/platform=iOS                                                        |\n| output_name                                                   | AeroNavMap                                                                  |\n| build_path                                                    | /Users/vagrant/Library/Developer/Xcode/Archives/2019-01-06                  |\n| clean                                                         | false                                                                       |\n| output_directory                                              | .                                                                           |\n| silent …
Run Code Online (Sandbox Code Playgroud)

xcode ios fastlane fastlane-match fastlane-gym

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

关闭模态视图时不调用 onDisappear

我依靠 SwiftUI.onDisappear来执行一些逻辑,但是当用户使用滑动手势关闭模态呈现的视图时,它不会被调用。繁殖

  • 以模态方式呈现视图“ChildView 1”
  • 在此视图上,推送“ChildView 2”作为导航子项
  • 向下滑动以关闭模态视图。

未调用“ChildView 2”的 .onDisappear。

重现的示例代码

import SwiftUI

struct ContentView: View {
    @State var isShowingModal
    var body: some View {
        NavigationView {
            Button(action: {
                self.isShowingModal.toggle()
            }) {
                Text("Show Modal")
            }
        }
        .sheet(isPresented: $isShowingModal) {
            NavigationView {
                ChildView(title: 1)
            }
        }
    }
}

struct ChildView: View {
    let title: Int
    var body: some View {

        NavigationLink(destination: ChildView(title: title + 1)) {
            Text("Show Child")
        }
        .navigationBarTitle("View \(title)")


        .onAppear {
            print("onAppear ChildView \(self.title)")
        }
        .onDisappear { …
Run Code Online (Sandbox Code Playgroud)

ios swiftui

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

如何设置对tvOS焦点元素的约束

我有一个UICollectionView在具有图像和字幕文本我tvOS应用程序.我设置了一个约束来固定图像下面的标题文本.

在此输入图像描述

当细胞聚焦并且图像增长时,文本不会移动并停留在图像上方.有没有办法设置一个考虑到聚焦图像大小的约束?

没有焦点的图像

图像与焦点

autolayout tvos focus-engine

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

围绕任意点旋转UIImageView

我有一个UIImageView,我围绕它的中心旋转:

imageHorizon.layer.anchorPoint = CGPointMake(0.5, 0.5);
imageHorizon.transform = CGAffineTransformRotate(imageHorizon.transform, angleToRotate*(CGFloat)(M_PI/180));
Run Code Online (Sandbox Code Playgroud)

有时我也会将此图像向左或向右移动然后再旋转.我想一直保持旋转中心在同一点(实际上是超视图的中心).我怎样才能做到这一点 ?

干杯,

anchor uiimageview ios

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

我可以使用beginBackgroundTaskWithName进行常规应用处理

我有一些NSOperations在我的应用程序中定期启动.即使将应用程序置于后台,它们也应该完成.为此,我正在使用该beginBackgroundTaskWithExpirationHandler方法.

我是否应该使用beginBackgroundTaskWithExpirationHandler/ endBackgroundTask:每次我开始我的任务,即使应用程序不是背景?或者我只是在检测到时才会调用开始/结束方法UIApplicationDidEnterBackgroundNotification

选项1:每次使用后台任务

/**
 * This method is called regularly from a NSTimer
 */
- (void)processData
{
    __block UIBackgroundTaskIdentifier operationBackgroundId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [[UIApplication sharedApplication] endBackgroundTask:operationBackgroundId];
        operationBackgroundId = UIBackgroundTaskInvalid;
    }];

    NSOperation *operation = ...
    [self.queue addOperation:operation];

    operation.completionBlock = ^{
        [[UIApplication sharedApplication] endBackgroundTask:operationBackgroundId];
        operationBackgroundId = UIBackgroundTaskInvalid;
    };
}
Run Code Online (Sandbox Code Playgroud)

选项2:仅在应用程序即将转到后台时使用后台任务

/**
 * This method is called regularly from a NSTimer
 */
- (void)processData
{

    NSOperation *operation =  ...
    [self.queue addOperation:operation];

} …
Run Code Online (Sandbox Code Playgroud)

uiapplication ios

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