小编Zon*_*ame的帖子

在 Podfile 上添加环境变量的可能性

是否可以在Podfiles上添加环境变量而不必创建自定义 shell 脚本来替换 my 中的字符串Podfile

例子:

platform :ios, '10.0'
source 'https://github.com/CocoaPods/Specs.git'
source 'https://<USERNAME>@bitbucket.org/awesometeamname/ios-private-specs.git'
use_modular_headers!

target 'a-generic-app-name' do
  use_frameworks!

  pod 'MaybeFirebase'
  pod 'AnotherSDK'
  pod 'AlamofireOfCourse'
  pod 'WhoUsesRxSwiftAnyway'

end
Run Code Online (Sandbox Code Playgroud)

这背后的原因是我们正在使用我们通过 ssh 连接到的私有 pod 规范存储库,开发人员必须始终推送或手动忽略推送用户名,是否可以通过命令行设置?

我现在当前的解决方案是我有一个我调用的脚本而不是调用pod install这个脚本来执行 ff:

  • 替换<USERNAME>字符串
  • 称呼 pod install

cocoapods

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

迅速.使用扩展函数替换变量的值

我想创建一个函数来更改变量的原始值.例如

class Something {
    var name:String = "   John Diggle   "
    name.trim()
    print(name)
    // prints out "   John Diggle   "

    // what I wanna do is to make it so that I don't do this
    name = name.trim()
    print(name)
    // prints out "John Diggle"
}




extension String {
   func trim() -> String{
       return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有做的情况下改变函数内部变量的值name = name.trim()

swift

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

有没有办法在 Kotlin 中进行 Swift 的协议组合

因此,对于 Swift,我们可以创建新类型或使用&运算符将其作为参数传递给方法。

示例 Swift 代码:

protocol Fooable {}
protocol Barable {}

// the new protocol
typealias FooBarable = Fooable & Barable

// method parameter 
func doSomethingFor(object: Fooable & Barable) { ... }
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Kotlin 的接口中做到这一点?

protocols interface kotlin swift swift-protocols

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

SwiftUI - 将数据传递到不同的视图

我正在开发一个有 4 个不同视图的应用程序。主视图(ContentView)、一个AddView、一个EditView和一个分离的DataView,其中包含一个类,我通过ObservableObject将所有数据传递给其他视图。

在主视图中,我有一个项目列表。在AddView 中,我将项目添加到该列表和ContentView。我希望能够使用导航链接编辑添加的项目。所以从主视图我想转到EditView,更改值并再次返回ContentView,在那里我看到更改的值。

你会使用ObservableObject来做这件事还是我需要 EnvironmentObject?因为此刻EditView不工作,我无法将数据从ContentView传递到EditViewEditView 上的所有文本字段都是空的,值不会被传递。它可以将数据从AddView 传递ContentView而不是从ContentView传递到EditView

有人能告诉我如何将数据链接到所有视图吗?

xcode swift swiftui

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

如何在多个 iOS 模拟器中运行 Flutter

环境:

[?] Flutter (Channel master, 1.19.0-2.0.pre.214, on Mac OS X 10.15.4 19E287, locale en-PH)
[?] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[?] Xcode - develop for iOS and macOS (Xcode 11.5)
[?] Chrome - develop for the web
[?] Android Studio (version 3.6)
[?] VS Code (version 1.45.1)
[?] Connected device (2 available)
Run Code Online (Sandbox Code Playgroud)

当我运行时,flutter devices我得到的是以下内容:

Web Server • web-server • web-javascript • Flutter Tools
Chrome     • chrome     • web-javascript • Google Chrome 83.0.4103.61 …
Run Code Online (Sandbox Code Playgroud)

android ios flutter

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

swift中的下标和协议

我正在定义一个协议(用于信息隐藏目的),它具有"下标"功能,同时具有getter和setter.然后我定义了一个实现该协议的类.

问题的简短版本:如果我在类的对象上使用下标(作为左值,从而使用setter),一切都按预期工作.如果我在刚刚声明协议类型的对象上执行此操作,则会出现"无法分配此表达式的结果"错误.

长版.我有一个Int的董事会.板是2D矩阵.我通过BoardType协议公开了Board类型.

protocol BoardType {
    var width: Int { get }
    var height: Int { get }
    subscript(x: Int, y: Int) -> Int { get set }
}

class Board: BoardType {

    let width, height: Int
    var matrix: Array2D<Int>

    init(width: Int, height: Int) {
        self.width = width
        self.height = height
        matrix = Array2D<Int>(cols: width, rows: height, defaultValue: 0)
    }

    subscript(x: Int, y: Int) -> Int {
        get {
            return matrix[x, y]
        }
        set {
            matrix[x, y] = newValue
        } …
Run Code Online (Sandbox Code Playgroud)

protocols subscript swift

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

Swift结构初始化,使另一个结构像String

在Swift上String是一个结构,你可以使用它来初始化它

var someString:String = "Hello"
Run Code Online (Sandbox Code Playgroud)

我如何将另一个Struct初始化为String?

例如

struct StringV2 {
    init()
}

class SomeClass {
    let someStringV2:StringV2 = "Hello"
}
Run Code Online (Sandbox Code Playgroud)

因为这就是String代码的样子.

xcode struct initialization swift

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

Swift 通用 Json 解析器

我有一个通用的 JSON 解析器,可以解码数组

class JSONParserFromStruct {
    typealias result<T> = (Result<[T], Error>) -> Void

    func downloadList<T: Decodable>(of _: T.Type,
                                    from data: Data,
                                    completion: @escaping result<T>) {
        do {
            let decodedData: [T] = try! JSONDecoder().decode([T].self, from: data)
            completion(.success(decodedData))
        } catch {
            completion(.failure(DataError.decodingError))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

捆绑包中的 Users.json 文件

{
    "name": "Taylor Swift"
}
Run Code Online (Sandbox Code Playgroud)

像这样调用它:

func performRequest() {
    let url = Bundle.main.url(forResource: "Users", withExtension: "json")!
    let data = try! Data(contentsOf: url)
    genericParser.downloadList(of: User.self, from: data) { result in
        switch result {
        case let …
Run Code Online (Sandbox Code Playgroud)

generics json json-deserialization swift jsondecoder

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

将值附加到[String:AnyObject]或[String:String]

我想将值附加到类型的变量[String : AnyObject]我该怎么做?因为我无法做到ff.

var someObject:[String : AnyObject] = ["name":"John Diggle", "location":"Star City Prison"]

someObject.append(["work":"soldier"])        // does not work  (by that I mean there is no .append function like that of other collection types such as NSMutableArray and NSMutableDictionary
someObject = someObject + ["work":"soldier"] // does not work
Run Code Online (Sandbox Code Playgroud)

自从Alamofire.request使用以来,我找到了一种为Alamofire制作更简单参数的方法 [String : AnyObject]

parameters dictionary swift alamofire

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

如何将枚举集成到 propertyWrapped UserDefault 中

下面的结构适用于基本数据类型,例如IntStringDouble等,有没有办法使其适用于枚举,这样我就不必使用 rawValues 进行手动解析?

@propertyWrapper
struct Storage<T> {
  let objectName: String
  let defaultValue: T
  let defaults: UserDefaults

  init(_ objectName: String, defaultValue: T, defaults: UserDefaults = .standard) {
    self.objectName = objectName
    self.defaultValue = defaultValue
    self.defaults = defaults
  }

  var wrappedValue: T {
    get { return self.defaults.object(forKey: self.objectName) as? T ?? self.defaultValue }
    set { self.defaults.set(newValue, forKey: self.objectName) }
  }
}
Run Code Online (Sandbox Code Playgroud)

目前我的解决方法是将对象包装在枚举的另一个 getter 和 setter 中,如下所示。

enum SomeType: String {
  case foo, bar, baz
}


class Defaults …
Run Code Online (Sandbox Code Playgroud)

enums swift property-wrapper

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

Kotlin是否具有像Swift这样的Result类型

Swift具有Result这样声明的类型

enum Result<Success, Failure: Error> {
    case success(Success)
    case failure(Failure)
}
Run Code Online (Sandbox Code Playgroud)

可以这样使用:

enum FooError: Error {
    case fizzReason
    case barReason
    case bazReason
}

func returnResult() -> Result<String, FooError> { 
    // ... Just imagine this method returns an error
}

switch returnResult() {
case .success(let string):
    print(s)
case .failure(.fizzReason):
    // do something
case .failure(.barReason):
    // do something
case .failure(.bazReason):
    // do something
}
Run Code Online (Sandbox Code Playgroud)

Kotlin是否具有可以以相同方式使用的类似数据类型?

types kotlin swift

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

Alamofire,未声明类型的使用

我正在使用 Alamofire 进行 SSL 固定。为此,我使用以下代码:

import Foundation
import Alamofire
import SwiftyJSON   

class CertificateManager {
    init() {
        let serverTrustPolicies: [String: ServerTrustPolicy] = [
            "test.example.com": .pinCertificates(
                certificates: ServerTrustPolicy.certificates(),
                validateCertificateChain: true,
                validateHost: true
            ),
            "insecure.expired-apis.com": .disableEvaluation
        ]

        let sessionManager = SessionManager(
            serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

但发生了这些错误:

使用未声明的类型错误

我的 pod 文件是:pod 'Alamofire', '~> 5.0.0-rc.2'.

我搜索并测试了一些解决方案,但无法解决错误。我怎样才能解决这个问题?

我也试过这个答案。+

ssl xcode swift alamofire

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