标签: protocols

Swift 程序中的委托为零

我正在练习如何使用协议和委托在两个视图控制器之间进行通信(在 xCode 背景中,即使我在项目中使用协议,我也会遇到同样的问题,委托为零),但是在设置它向我显示的所有内容后出现问题我的委托为零,并且发送者 VC 不发送任何数据,因为委托为零。

我已经确认了协议,并将接收方 VC 设置为委托,但仍然看不出问题出在哪里。

协议

protocol theCommunicationsStructionProtocol{

func dataToTransmit(Data: String)

}
Run Code Online (Sandbox Code Playgroud)

发送者 VC

class TheSenderVC{

var delegate: theCommunicationsStructionProtocol?

func lookingForDelegate(){


self.delegate?.dataToTransmit(Data: "Data has been sent")

 }
}
Run Code Online (Sandbox Code Playgroud)

接收器VC

class TheReceiverVc1: theCommunicationsStructionProtocol{
var TheSenderVCObj = TheSenderVC()

func delegateLuncher(){

TheSenderVCObj.delegate = self
}

func dataToTransmit(Data: String) {
print("from VC1: \(Data)")
 }

}
Run Code Online (Sandbox Code Playgroud)

调用 delegateLuncher() 在接收者 VC 中设置委托

TheSenderVC().lookingForDelegate()
Run Code Online (Sandbox Code Playgroud)

从发送方 VC 调用lookingForDelegate() 来查找委托并向其发送数据

TheReceiverVc1().delegateLuncher()
Run Code Online (Sandbox Code Playgroud)

注意:我尝试使用以下方式从接收者 VC 访问委托:

class TheReceiverVc1: theCommunicationsStructionProtocol{
 var TheSenderVCObj: TheSenderVC?

func delegateLuncher(){

self.TheSenderVCObj?.delegate = self
} …
Run Code Online (Sandbox Code Playgroud)

delegates protocols ios swift

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

我如何避免将这 3 行写两次?

考虑 SwiftUI 中的以下扩展:

extension Text{
   func applyBG() -> some View {
      self
         .padding(20)
         .background(Color(hue: 0, saturation: 0, brightness: 0.22).cornerRadius(10))
         .foregroundColor(.white)
   }
}

extension TextField{
   func applyBG() -> some View {
      self
         .padding(20)
         .background(Color(hue: 0, saturation: 0, brightness: 0.22).cornerRadius(10))
         .foregroundColor(.white)
   }
}
Run Code Online (Sandbox Code Playgroud)

我觉得我可以写得更好,避免重复。我可能可以用类似的方法解决这个问题:

extension View{
   func applyBG() -> some View {
      self
         .padding(20)
         .background(Color(hue: 0, saturation: 0, brightness: 0.22).cornerRadius(10))
         .foregroundColor(.white)
   }
}
Run Code Online (Sandbox Code Playgroud)

但我不希望我所有的观点都能够调用这个方法。我只希望 Text 和 Textfield 有这样的方法。我尝试使用协议和关联类型,但我无法一次编写这些行以实现干净的代码。关于如何实现 DRY 的任何提示或伪代码?

generics protocols swift swiftui

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

监控自定义URL协议消息 - Delphi

如您所知,这custom url protocol是一个允许我们在网页和我们的应用程序之间进行通信的功能.例如,Y!当您想通过网页向其他人发送pm时,Messenger使用此协议:

 <a href="ymsgr:sendim?YahooID">Click to send pm</a>
Run Code Online (Sandbox Code Playgroud)

现在,问题是如何监视(挂钩)custom url protocol窗口中的所有消息?抓住它们有可能吗?

delphi url protocols monitor

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

二元运算符'=='不能应用于两个'Equatable'操作数......什么?

您可以在下面的图像中看到我正在尝试扩展Collection协议以包含一个被调用的方法removingDuplicates,该方法应该完全按照它所说的去做.编译器显示的错误似乎与Equatable协议的定义直接相矛盾.这是一个错误还是我误解了什么?

在此输入图像描述

xcode protocols swift equatable

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

@protocol是什么意思?

查看Apples头文件NSView.h

我看到这一行

@protocol NSDraggingSource;
Run Code Online (Sandbox Code Playgroud)

后来我明白了

@interface NSView : NSResponder <..., NSDraggingDestination,...>
Run Code Online (Sandbox Code Playgroud)

那么NSView符合哪些协议?

protocols objective-c

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

C语言应用程序进行数据通信

我打算开发一个应用程序(可以是C或Ada !!)来在两台计算机之间交换数据.请帮我开始这项工作.

c protocols

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

发送电子邮件附件的协议

据我所知,有以下协议用于发送和接收电子邮件:

  1. SMTP(用于发送电子邮件)
  2. 流行音乐、流行音乐3
  3. IMAP
  4. 如果还有的话请列出来。

这些协议中的哪些用于在电子邮件中发送附件?发送电子邮件时 FTP 或 TFTP 有什么作用吗?

networking network-programming cisco protocols email-attachments

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

java.net.MalformedURLException:无协议:XML

我正在尝试将XML String输出到.xml文件中以进行调试.我的字符串看起来像这样:

System.out.println("xmlString = \n" + xmlString);
===========================================================
INFO: xmlString = 
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">2</int>
  <lst name="params">
    <str name="indent">true</str>
    <str name="q">source_t:ST</str>
    <str name="wt">xml</str>
  </lst>
</lst>
...
Run Code Online (Sandbox Code Playgroud)

现在,以下代码将String输出到XML文件中.

try {
                System.out.println("Writing xmlString to xml file");

                File file = new File("xmlString.xml");

                // if file doesnt exists, then create it
                if (!file.exists()) {
                        file.createNewFile();
                }

                FileWriter fw = new FileWriter(file.getAbsoluteFile());
                BufferedWriter bw = new BufferedWriter(fw);
                bw.write(xmlString);
                bw.close();

                System.out.println("Done writing file");

        } catch (IOException e) {
                e.printStackTrace();
        } …
Run Code Online (Sandbox Code Playgroud)

java xml protocols file writer

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

如果 HTTP 协议是有状态的怎么办?

我知道 HTTP 是一种无状态协议。但是对于 HTTP 协议的无状态没有正确的解释。为什么 HTTP 协议是无状态的?当 HTTP 协议有状态时会发生什么?

protocols http

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