我有一个容器视图,我弹出了我的故事板.有一个很棒的小箭头代表嵌入到另一个场景的segue.该场景的顶级对象由自定义控制UIViewController.我想调用一个在我的自定义类中实现的方法.如果我可以访问容器,我如何获取内部的参考?
我想从 Deno 运行任何任意的 bash 命令,就像我在 Node.js 中使用的一样child_process。这在 Deno 中可能吗?
这些工具可用吗?我有一个苹果开发者帐户,我下载了Xcode 9 beta,我从https://developer.apple.com/download/获得.
Xcode 9开发人员工具出来了吗?
许多视图的子视图不一定需要将自己的控制器与它们相关联.在Apple 自己的创建自定义视图的教程中,他们实际上并没有为每个子视图创建一个子UIViewController.
但是,我经常遇到这样的情况:我将拥有一个视图层次结构,其中子视图的某个子视图有一个发送网络请求的按钮.在那种情况下,我可以做一个目标:
myView.addTarget(self, action: "networkRequest:", forControlEvents: UIControlEvents.TouchDown)
Run Code Online (Sandbox Code Playgroud)
然后在同一个myView类中我可以处理该网络请求,但这似乎打破了MVC模式.View不应该做逻辑,他们应该只显示东西,对吗?
我们可以做的另一个选择是让每个视图都可以访问逻辑所需的父控制器或祖父控制器.在我的目标可能看起来像这样的情况下:
func networkRequest(view : MyView) {
self.controller.doNetworkRequest()
}
Run Code Online (Sandbox Code Playgroud)
但这似乎也不是一个正确的解决方案.再一次,似乎我们只是打破了MVC并且彻底摆脱了困境.
所以相反,就我所见,我们只剩下两个选项中的一个:
首先,我们可以从父控制器本身添加目标和所有逻辑.但这样做会给我们带来如此恶劣的链条:
self.grandParentView.parentView.childView.addTarget(self, action: "networkRequest:", forControlEvents: UIControlEvents.TouchDown)
Run Code Online (Sandbox Code Playgroud)
那长长的访问列表让我感到寒意,看起来很糟糕.但是,它似乎仍然遵循MVC.从技术上讲,我们在控制器中执行逻辑,对吗?
但可能还有另一种选择.我们可以给每个视图一个控制器,让每个UIViewController都有一个子控制器用于每个新的子视图.
但是,有些观点是静态的.它们实际上没有任何逻辑,因此它们不一定需要控制器.但是,如果我们要遵循这个约定,我们基本上需要每个视图一个,否则我们会有一个不一致的地方,控制器有一个孙子控制器,但没有子控制器.
所以我们为控制器创建了很多空的棺材.这会构建许多永远不会被使用的死代码,这会导致一些软件腐烂.
那么一个比我更聪明,更聪明的人,这里有什么正确的解决方案?
我正在尝试从公钥获取帐户:
await program.account.myAccountType.fetch(somePubkey);
Run Code Online (Sandbox Code Playgroud)
但随后 Anchor 抛出一个错误:
Invalid account discriminator
Run Code Online (Sandbox Code Playgroud)
什么是账户鉴别器?
我正在尝试调用 Solana 程序,当我运行时sendAndConfirmTransaction,它给了我Signature Verification Failed,我不知道为什么。
const {sendAndConfirmTransaction, clusterApiUrl, Connection} = require("@solana/web3.js");
let signer = Keypair.generate();
let anotherKeypair = Keypair.generate();
let transaction = someInstruction(signer, anotherKeypair);
let connection = new Connection(clusterApiUrl('testnet'));
sendAndConfirmTransaction(
connection,
transaction,
[signer]
);
Run Code Online (Sandbox Code Playgroud) 我尝试部署 Solana 程序,但失败了,并且我丢失了用于出租的 SOL。有什么办法可以拿回来吗?
Error: Deploying program failed: Error processing Instruction 1: custom program error: 0x1
Run Code Online (Sandbox Code Playgroud) 如果您.pbxproj在文本编辑器中打开该文件,您将看到如下内容:
/* Begin PBXBuildFile section */
25AF71181D2046B400566BC8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25AF71171D2046B400566BC8 /* AppDelegate.swift */; };
25AF711A1D2046B400566BC8 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25AF71191D2046B400566BC8 /* ViewController.swift */; };
25AF711D1D2046B400566BC8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 25AF711B1D2046B400566BC8 /* Main.storyboard */; };
25AF711F1D2046B400566BC8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 25AF711E1D2046B400566BC8 /* Assets.xcassets */; };
25AF71221D2046B400566BC8 /* LaunchScreen.storyboard in …Run Code Online (Sandbox Code Playgroud) 我认为比较字符串会像做一样简单:
function withStrs(string memory a, string memory b) internal {
if (a == b) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
但是这样做会给我一个错误Operator == not compatible with types string memory and string memory。
什么是正确的方法?
我正在尝试使用“docker build.”从我的 docker 文件中运行这两行:
FROM ubuntu:latest
RUN apt-get update
Run Code Online (Sandbox Code Playgroud)
这是我运行它时发生的情况(包含错误):
[+] Building 16.0s (6/18)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 923B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 5.7s
=> [internal] load build context 0.0s
=> => transferring context: 36B 0.0s
=> CACHED [ 1/14] FROM docker.io/library/ubuntu:latest@sha256:703218c046 0.0s
=> ERROR [ 2/14] RUN apt-get update 10.2s
------
> [ 2/14] RUN apt-get update: …Run Code Online (Sandbox Code Playgroud)