小编Don*_*Lee的帖子

Swift @escaping和Completion Handler

我试图更准确地理解Swift的"关闭".

@escapingCompletion Handler太难以理解

我搜索了许多Swift帖子和官方文档,但我觉得还不够.

这是官方文档的代码示例

var completionHandlers: [()->Void] = []

func someFunctionWithEscapingClosure(completionHandler: @escaping ()->Void){
    completionHandlers.append(completionHandler)
}

func someFunctionWithNoneescapingClosure(closure: ()->Void){
    closure()
}

class SomeClass{
    var x:Int = 10
    func doSomething(){
        someFunctionWithEscapingClosure {
            self.x = 100
            //not excute yet
        }
        someFunctionWithNoneescapingClosure {
            x = 200
        }
    }
}

let instance = SomeClass()
instance.doSomething()
print(instance.x)

completionHandlers.first?() 
print(instance.x)
Run Code Online (Sandbox Code Playgroud)

我听说有两种使用方法和原因 @escaping

第一个用于存储闭包,第二个用于Async操作目的.

以下是我的问题:

首先,如果doSomething执行someFunctionWithEscapingClosure则将使用closure参数执行,并且该闭包将保存在全局变量数组中.

我认为封闭是{self.x = 100}

如何self在{self.x = 100}中保存在全局变量中completionHandlers可以连接到instance该对象 …

closures escaping swift

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

如何在 SwiftUI 中制作内阴影

我想在 SwiftUI 中制作视图(文本、按钮等)的内部阴影

SwiftUI 有外阴影但没有内阴影

我想做的是使用 SwiftUI 的 Neumorphism UI

图片来自“用户界面中的新拟态”,作者:Michal Malewicz

我想要制作按钮按下的 UI

但我不知道从哪里开始制作内阴影

ios swift swiftui

14
推荐指数
3
解决办法
4721
查看次数

swift中的T.Type是什么

谁能告诉我什么T.Type时候我使用JSONDecoder().decode()?

我认为它是解码我编码的数据的类型

这么多的例子使用上面这样的方法

JSONEncoder().decode([People].self, from: data) ...
Run Code Online (Sandbox Code Playgroud)

如果我检查该方法的定义,我可以看到T.Type.

我知道仿制药但是什么 T.Type

只有T和T.Type有什么区别

当我们声明一些变量时,我们就像这样分配它们的类型

var someValue: Int 不是 var someValue: Int.self

什么是T.Type确切的和Type.self

generics types swift

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

如何通过'Bcrypt'Gem比较解密密码和加密密码

我正在尝试对一些帖子的评论使用简单的身份验证.

用户使用即时ID和密码键入注释

我用'bcrypt'gem来存储数据库中的密码.

在comments_controller.rb中是这样的

@comment = Comment.new(comment_params)
bcrypted_pwd = BCrypt::Password.create(@comment.user_pwd)
@comment.user_pwd = bcrypted_pwd
Run Code Online (Sandbox Code Playgroud)

当用户想要删除他们的评论时,我使用data-confirm-modal gem来确认数据

在这部分中,我必须解密用户输入密码以与Database中的加密密码进行比较

我怎么能解密密码,有没有什么好方法可以做到这一点?

ruby encryption ruby-on-rails bcrypt bcrypt-ruby

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

什么是iOS中的SearchPathDomainMask和SearchPathDirectory

我正在尝试了解iOS和macOS文件系统

但是SearchPathDomainMask和SearchPathDirectory让我非常困惑

let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我认为这个URL是用户域中记录的目录路径

如果本地域中有文档目录,这段代码可能吗?

let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .localDomainMask)
Run Code Online (Sandbox Code Playgroud)

SearchPathDirectory只是枚举知名文件URL吗?

域掩码或域的目的是什么

directory file nsfilemanager ios swift

5
推荐指数
0
解决办法
258
查看次数

ARAnchor到底是什么?

我正在尝试了解和使用ARKit。但是有一件事我无法完全理解。

苹果关于ARAnchor说:

现实世界中的位置和方向,可用于在AR场景中放置对象。

但这还不够。所以我的问题是:

  • 到底是ARAnchor什么?
  • 锚点和特征点之间有什么区别?
  • ARAnchor的特征点只是一部分?
  • 以及ARKit如何确定其锚点?

augmented-reality ios swift arkit realitykit

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

Existential Container与符合协议的struct实例之间的关系

我试图了解如何找到协议方法的实现。

我知道 Swift 使用存在容器在堆栈内存中进行固定大小的存储,它管理如何描述内存中的实例struct。它有一个值见证表(VWT)和协议见证表(PWT)

VWT 知道如何管理结构实例中的实际值(它们的生命周期),PWT 知道协议方法的实现。

但我想知道结构体实例和“存在容器”之间的关系。

的实例是否struct有一个指向存在容器的指针?

a 的实例如何struct知道它的存在容器?

existential-type method-dispatch swift

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

是否可以使用 firebase 在 Cloud 函数中调用其他 API?

我想在 iOS 上做一些推送警报

当用户在特定时间设置警报时,服务器通过在该时间调用 Wea​​ther API(ex OpenweatherMap)发送天气数据。

是否可以在 Firebase 中使用云函数

push-notification ios firebase google-cloud-functions

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

Swift 中的枚举和泛型

已编辑

您好,我正在尝试制作自己的单位转换器

但是当我尝试同时制作重量和长度时出现了一些问题

有很多重复的代码

enum LengthUnit: String{
    case inch
    case cm
    case m
    case yard

    static func unit(of value: String) -> LengthUnit?{
        switch value {
        case let value where value.contains("inch"):
            return .inch
        case let value where value.contains("cm"):
            return .cm
        case let value where value.contains("m"):
            return .m
        case let value where value.contains("yard"):
            return .yard
        default:
            return nil
        }
    }
}

enum WeightUnit:String {
    case g
    case kg
    case lb
    case oz

    static func unit(of value: String) -> WeightUnit?{
        switch value { …
Run Code Online (Sandbox Code Playgroud)

generics enums swift

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

rails xhr.send( ( options.hasContent && options.data ) || null ); 错误

我试图为每个食谱制作类似按钮

但如果我点击按钮浏览器说

xhr.send( ( options.hasContent && options.data ) || null );

返回此错误

我不知道为什么会出现这个错误

这是我在 Rails 中的代码

application.js

function like(id){
    $.ajax({
        url:"/like/" + id,
        type:"POST",
        dataType:"json",
        success: function(data){
            if(data.result){
                $("#countlike").html("likes " + data.count);
                // $("#count").removeAttr('onclick');
                // $("#count").attr('disabled', 'disabled');
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

route.rb

post '/like/:id'=>'recipes#like' 
Run Code Online (Sandbox Code Playgroud)

views/recipes/show.html.erb

<p>
  <a id = "countlike" onclick="like(<%=@recipe.id%>)">Like it</a>
</p>
Run Code Online (Sandbox Code Playgroud)

recipes_controller.rb

  def like
      likes = Recipe.find(params[:id]).likes           
      result = likes.create 
      render json:{result: result, count: likes.count}
  end
Run Code Online (Sandbox Code Playgroud)

它在其他项目相同的代码中正常工作

javascript ruby ajax jquery ruby-on-rails

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

InstantiateViewController(withIdentifier:) 和 ViewController(nibName:bundle:) 之间有什么区别?

我试图了解两个视图控制器之间的通信。

在没有 segue 的情况下传递数据时,我看到了两种创建目标控制器实例的方法。

第一个是storyboard?.instantiateViewController(withIdentifier:)。第二个是ViewController(nibName:bundle:)。然后向他们展示present(UIViewController..).

这两种方法有什么区别?他们只是通过故事板标识符或nibName?

uiviewcontroller ios

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