小编Sh_*_*han的帖子

使用 UITableViewAutomaticDimension 时如何更改 UitableviewCell 中 UIView 的高度约束

在此输入图像描述

我在 UITableViewCell 中有一个 UIView ,当用户点击“更少/更多”按钮时需要更改其高度

我的代码是

 - (CGFloat)tableView:(UITableView *)tableView       estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ios ios-autolayout uitableviewautomaticdimension

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

metadata.downloadURL()不再被识别?

我刚刚将Firebase存储更新到5.0.0,它看起来metadata.downloadURL()已经不再被识别了.(Value of type 'StorageMetadata' has no member 'downloadURL')

虽然在查看文档后仍应该可用:

https://firebase.google.com/docs/reference/swift/firebasestorage/api/reference/Classes/StorageMetadata#/c:objc(cs)FIRStorageMetadata(im)downloadURL

该项目已经清理和重建.

我错过了什么吗?

xcode firebase swift firebase-storage swift4

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

转义闭包捕获非转义参数“完成”(Swift 5)

在我的项目中,我遇到了一种情况,当我需要使用后台队列来创建 AVPlayerItem (我在setupTrackModels函数中创建)时。我想在getTracks函数中执行此操作,并且此方法还必须有一个完成处理程序,我需要在主线程中调用它,但我无法以任何方式使它们成为朋友。我收到编译器错误:Escaping closure captures non-escaping parameter 'completion'也许有人可以告诉我如何执行此操作或显示另一种方法。

我想做这样的事情:

var content: [URL] = []
var tracks: [TrackModelProtocol] = []

private func getTracks(completion: () -> ()) {
    DispatchQueue.global(qos: .background).async { //Error: Escaping closure captures non-escaping parameter 'completion'
        self.tracks = self.setupTrackModels(content: self.content)
        
        DispatchQueue.main.async { //Error: Escaping closure captures non-escaping parameter 'completion'
            completion()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用这样的函数:

getTracks {
   tableView.reloadData()
   //or something else
}
Run Code Online (Sandbox Code Playgroud)

我不想tableView.reloadData()在 DispatchQueue.main 中使用。getTracks块,因为我多次调用并且我想在它的完成块中实现不同的逻辑

grand-central-dispatch ios completionhandler swift

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

IOS 13 UIWindow 实例在应用程序启动期间为零

我正在尝试将我managedObjectContext的传递给下一个控制器。我UIWindow在 appDelegate 文件中生成了一个实例,因为我需要获取我的备用控制器。但是,Xcode 说我的UIWindow实例为零。

这个 id 我的代码:

lazy var managedObjectContext: NSManagedObjectContext = persistentContainer.viewContext

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    let tabController = window!.rootViewController as! UITabBarController
    if let tabViewControllers = tabController.viewControllers {
        let navController = tabViewControllers[0]  as! UINavigationController
        let controller = navController.viewControllers.first as! CurrentLocationViewController
        controller.managedObjectContext = managedObjectContext
    }

    return true
}
Run Code Online (Sandbox Code Playgroud)

调试

在此处输入图片说明 在此处输入图片说明

这有点奇怪。如何解决这个问题?提前致谢。

uiwindow ios appdelegate swift ios13

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

如何展平自定义对象 [[CustomModel?]] 的数组数组?

我只有 Swift 的基础知识。我想var dataSource:[[CustomModel?]]?变成[CustomModel].

我尝试了以下方法

  1. 让平 = dataSource.reduce([],+)
  2. 让平 = dataSource.flatMap { $0 }
  3. 让平 = dataSource.compactMap{ $0 }
  4. 让平 = dataSource.Array(dataSource.joined())

我收到错误

无法将类型“[FlattenSequence<[[CustomModel?]]>.Element]”(又名“Array<Optional< CustomModel >>”)的值转换为预期参数类型“[CustomModel]”

arrays higher-order-functions swift

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

UISearchController dimsBackgroundDuringPresentation 已弃用

我看到dimsBackgroundDuringPresentationiOS SDK 12 现在已弃用。此属性的替代品是什么?

ios swift uisearchcontroller

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

如何在 SwiftUI 中的 LazyHStack 中设置滚动位置

我有一个水平滚动的 LazyHStack。如何设置初始滚动位置?

在 UIKit 中,我将创建一个水平滚动的 UICollectionView 并设置collectionView.contentOffset来设置初始滚动位置,但我不确定如何在 SwiftUI 中执行此操作。

struct ContentView: View {
    var body: some View {
        ScrollView(.horizontal) {
            LazyHStack {
                ForEach(1...100, id: \.self) { i in             
                    Text("\(i)")
                }
            }
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

scrollview ios swift swiftui

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

参数类型不符合 Encodable

我正在尝试为 POST 请求创建一个结构。据我所知,结构符合类型Codable别名,但我不断收到错误消息

参数类型 'RegisterUserRequest.Type' 不符合预期的类型 'Encodable'" 将其作为参数传递给我的JSONEncoder.

我试图只符合Encodable, 编写建议的必需 init() 但似乎没有任何效果。

这就是我的 Struct 的样子


struct RegisterUserRequest: Codable {
    var firstName: String
    var lastName: String
    var email: String
    var phoneNumber: String
    var dateOfBirth: String

    enum CodingKeys: String, CodingKey {
        case firstName = "first_name"
        case lastName = "last_name"
        case email
        case phoneNumber = "phone"
        case dateOfBirth = "date_of_birth"
    }
}

Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

在此处输入图片说明

networking ios swift codable encodable

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

实例成员“layer”不能在类型“CustomPrettyView”上使用

import UIKit 
class CustomPrettyView: UIView { 
    override class func awakeFromNib() {
        layer.cornerRadius = 20 
    } 
}
Run Code Online (Sandbox Code Playgroud)

为什么它不起作用?

ios swift

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

GoogleSignIn:GIDSignInResult 类型的值没有成员“身份验证”

我最近更新了当前版本的 GoogleSignIn,但找不到解决我面临的这个问题的方法。我收到的错误是:“GIDSignInResult”类型的值没有成员“身份验证”

func googleSignInAction(){
        guard let clientID = FirebaseApp.app()?.options.clientID else { return }
        let config = GIDConfiguration(clientID: clientID)
        
        GIDSignIn.sharedInstance.signIn(withPresenting: self) { user, error in
            if let error = error {
                print("There is an error signing the user in ==> \(error)")
                return
            }

            guard let authentication = user?.authentication, let idToken = authentication.idToken else { return }
            let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)

            Auth.auth().signIn(with: credential) { authResult, error in
                if error != nil {
                    print(error)
                } else {
                    self.email = …
Run Code Online (Sandbox Code Playgroud)

xcode ios cocoapods swift google-signin

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