小编Soh*_*ard的帖子

SwiftUI 中的更好性能:创建新视图或使用带有 @ViewBuilder 的函数

在 SwiftUI 中使用不同的视图组合时,我们可以采取两种方法:

  1. 要在视图内使用一些 @ViewBuilder 函数作为辅助函数:
@ViewBuilder func makeButtonLabel() -> some View {
    if isPlaying {
        PauseIcon()
    } else {
        PlayIcon()
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 要为该 UI 部分创建不同的视图:
struct SongRow: View {
    var song: Song
    @Binding var isPlaying: Bool
    ...

    var body: some View {
        HStack {
            if isPlaying {
                PauseIcon()
            } else {
                PlayIcon()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道哪一个更好,我们如何衡量它?

从分析上来说,在我看来,第二个在更大的视图块中具有更好的性能,特别是我们可以在预览的加载时间中看到它,但我对此没有任何线索。

xcode swift swiftui swiftui-previews

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

如何从 Google Cloud Storage 存储桶加载保存在 joblib 文件中的模型

我想加载一个从 Google Cloud Storage 存储桶保存为joblib文件的模型。当它在本地路径时,我们可以按如下方式加载它(考虑到model_file是系统中的完整路径):

loaded_model = joblib.load(model_file)
Run Code Online (Sandbox Code Playgroud)

我们如何使用 Google Cloud Storage 完成相同的任务?

python google-cloud-storage scikit-learn joblib

5
推荐指数
2
解决办法
4617
查看次数

“ pod安装”后目标重复

将新的依赖项添加到项目并运行后pod install,我的工作区(.xcworkspace)中的目标重复如下:

在此处输入图片说明

这是pod文件的结构:

platform :ios, '8.0'
use_frameworks!
pod 'AFNetworking', '~> 2.6'
pod 'Fabric'
pod 'Crashlytics'
pod 'SocketRocket'
Run Code Online (Sandbox Code Playgroud)

我重新启动了项目,也重新启动了Xcode,但这无济于事。原因是什么,我该如何解决?

xcode objective-c ios cocoapods xcode-workspace

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

从 DispatchGroup 等待获取最新结果

问题描述:

我想通过“DispatchGroup”执行一堆异步任务,当所有任务完成时,它会返回结果。此外,我想设置限制过程的超时,并在那时向我发送回成功的结果。我使用了以下结构:

代码块

let myGroup = DispatchGroup()

var result = [Data]()
for i in 0 ..< 5 {
    myGroup.enter()

    Alamofire.request("https://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON { response in
        print("Finished request \(i)")
        result.append(response.data)
        myGroup.leave()
    }
}

// Timeout for 10 seconds
myGroup.wait(timeout: DispatchTime(uptimeNanoseconds: 10000000000))

myGroup.notify(queue: .main) {
    return result
}
Run Code Online (Sandbox Code Playgroud)

如果超时如何获取最新结果?

grand-central-dispatch ios swift

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

从 Swift 包加载字体

我想知道目前是否有办法从 Swift 包中加载字体?字体文件在包中,但编译后的程序找不到它们。

swift swift-package-manager

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

将 nil 替换为空或组合中的错误

我有一个这样的组合发布者:

enum RemoteError: Error {
    case networkError(Error)
    case parseError(Error)
    case emptyResponse
}

func getPublisher(url: URL) -> AnyPublisher<Entiy, RemoteError> {
    return URLSession.shared
        .dataTaskPublisher(for: url)
        .map(\.data)
        .decode(type: RemoteResponse.self, decoder: decoder)
        .mapError { error -> RemoteError in
            switch error {
            case is URLError:
                return .networkError(error)
            default:
                return .parseError(error)
            }
        }
        .map { response -> Entiy in
            response.enitities.last
        }
        .eraseToAnyPublisher()
}

struct RemoteResponse: Codable {
    let enitities: [Entity]
    let numberOfEntries: Int
}

struct Entity {

}
Run Code Online (Sandbox Code Playgroud)

通过上述设置,编译器会抱怨,因为response.enitities.last可能为零。问题是我可以用空发布者替换 nil 吗?如果不能,我可以用emptyResponse合并链中的错误替换它吗?第一个选项是更可取的。

reactive-programming swift combine

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

无法将参数传递给UITableViewCell

我有一些不同的单元格,为此我需要将参数从我的UIViewController传递到我的UITableViewCell的子类.但它不起作用.场景如下:

MessagesViewController.m:

#import "MessagesViewController.h"
#import "MessageTableViewCell.h"

- (void)viewDidLoad
{    
    [super viewDidLoad];

    [self.tableView registerClass:[MessageTableViewCell class] forCellReuseIdentifier:MessengerCellIdentifier];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MessageTableViewCell *cell = (MessageTableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:MessengerCellIdentifier];

    if (cell == nil) {
        cell = [[MessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MessengerCellIdentifier customParam:YES];
    }
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

MessageTableViewCell.m:

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier customParam:(BOOL)customParam
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
       // **** GET Custom Parameter (customParam) HERE ??? ****/
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,customParam是我的参数.一切似乎都没问题,但是单元格不是零,所以程序失败了.

objective-c uitableview ios

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