我已经看过一些帖子讨论静态变量是什么,我认为我得到了它 - 但我很乐意快速编写(或找到)一个兼具常规变量和静态变量的程序,并且看到如何/何时以不同的方式运作 一些快速的脏代码,可能是两个int vars和几个NSLog跟踪语句,只是为了看它们有什么不同.
任何人都有任何提示/想法/代码,可以说明静态var与常规var有何不同?
unrecognized selector每次Notification到达时我都会崩溃并收到错误,而App会尝试执行其关联的方法.这是我的代码 - 在viewDidLoad:
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: Selector(("sayHello")), name:NSNotification.Name(rawValue: "dataDownloadCompleted"), object: nil)
Run Code Online (Sandbox Code Playgroud)
该sayHello()方法是相当简单的-看起来是这样的:
func sayHello() {
print("Hello")
}
Run Code Online (Sandbox Code Playgroud)
我已经确认已Notification成功发布并且成功到达 - 所以这不是问题.当App试图Notification通过执行该sayHello()方法时到达时,就会发生崩溃.它一直给我这个unrecognized selector错误.
我有什么想法我做错了吗?(顺便说一句,这与Swift 3和Xcode 8完美配合,但现在使用Swift 4和Xcode 9语法已经改变了[Xcode让我完成了必要的代码修复/更新] - 但崩溃仍在继续.)
任何人都可以使用类比来解释他们的一些现实生活过程 - 比如运行一个棒球队,一个咖啡店,或一个Auto-Mechanic's Shop - 什么都会让人感觉到什么?就像我们甚至不能谈论CODE,SYNTAX或编程一样 - 我已经看过很多帖子而且没有一个真的为我做过 - 我们可以先谈谈概念吗?
就像我甚至不明白为什么我们拥有它们,它们如何有利,等等.
向我展示使用和不使用委托的流程运行的真实世界类比,因此我可以看到是什么让它们如此有用和出色.
然后我们就可以编码了.
(仅供参考,我特别感兴趣的是Objective-C/iPhone App开发实施 - 但我真的认为首先从概念上理解这一点更为重要.)
提前致谢!
我必须删除项目中的共享扩展并从头开始 - 它现在在我的 iPhone6 上工作得很好,但它没有显示在模拟器中 - 这很奇怪。
例如,模拟器中的照片应用程序无法看到我的应用程序。设置应用程序也是如此:它看不到我的应用程序(那里没有打开/关闭开关来启用它。)
我知道我做的一切都是正确的 - 因为它在 iPhone 上工作得很好 - 但它仍然是一个阻力,因为在我的 iPhone 上测试它比在模拟器上测试它需要更长的时间。
我想有一些微小的设置 - 我需要在某个地方检查一些小复选框才能使其再次在模拟器中工作 - 有什么想法吗?
知道为什么有些人CNContacts回来时电话号码是空的吗?
我不断得到这样的输出:
"phoneNumbers=(not fetched), emailAddresses=(not fetched),"
Run Code Online (Sandbox Code Playgroud)
例如,当我从模拟器的内置联系人应用程序中获取联系人时,我会得到混合结果:
"John Appleseed" 确实返回了电话号码,但"Kate Bell"没有返回- 尽管她显然有电话号码。这很奇怪,因为我肯定CNContactPhoneNumbersKey在我的获取请求中使用。
这是我的代码:
let fetchKeys = [ CNContactEmailAddressesKey, CNContactPhoneNumbersKey,
CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName) ]
let contactFetchRequest = CNContactFetchRequest(keysToFetch: fetchKeys)
do {
try self.contactsStore.enumerateContactsWithFetchRequest(contactFetchRequest) {
fetchedContact, stop in
print("fetched Contact is: \n\(fetchedContact.description)")
}
}
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,输出显示有时获取的联系人会返回电话号码,有时则不会。电子邮件也是如此:有时会被退回,有时不会。
这种情况在模拟器中以及当我在 iPhone 上运行时都会发生。
知道这里会发生什么吗?
我刚刚将一个包含 5 张图像的文件夹上传到 IPFS(使用 Mac 桌面 IPFS 客户端应用程序,因此这是一个非常简单的拖放操作。)
\n因此,由于 I\xe2\x80\x99m 是创建并发布此文件夹的人,这是否意味着 I\xe2\x80\x99m 是唯一允许对其进行进一步修改的文件夹 - 例如添加或者从中删除更多图像?或者 IPFS 上的任何人也可以这样做吗?
\n如果可以的话,有没有办法防止这种情况发生?
\n=========================================
\n更新的问题:
\n我的具体用例与更新 ERC721 代币的元数据有关 -在 它们\xe2\x80\x99 已经被铸造之后。
\n想象一下,例如,在游戏中,某些物体(例如一把神奇的剑)在使用一定量后或在其所有者完成某些任务后获得特殊能力。因此,我们\xe2\x80\x99d想要通过编辑\xe2\x80\x99s元数据并将此更新后的元数据文件重新提交到区块链来更新此剑\xe2\x80\x99s属性。
\n例如,如果我们的游戏有 100 把剑,并且我们最初上传到 IPFS 的文件夹包含所有 100 个 json 文件(每把剑一个),那么我\xe2\x80\x99m 非常确定 IPFS 仍然让 \xe2\x80\x99s 你访问哈希文件夹中的特定文件通过其特定的人类可读名称(而不仅仅是通过其哈希值。)\n因此,如果我们的剑恰好是剑 #76,并且我们的 JSON 文件的命名约定采用以下格式\xe2\x80\x9csword000.json\xe2\x80\x9d:那么 Sword#76\xe2\x80\x99s JSON 元数据文件的路径如下:\n http://ipfs.infura.io/QmY2xxxxxxxxxxxxxxxxxxxxx/sword076.json
如果我们随后编辑 \xe2\x80\x9csword076.json\xe2\x80\x9c 文件并将其拖放到我们的主 JSON 文件夹中,则显然会导致该文件夹\xe2\x80\x99s 哈希/CID 值改变。但是,只要我们\xe2\x80\x99能够更新我们的 Solidity Contract\xe2\x80\x99s \xe2\x80\x9ctokenURI\xe2\x80\x9d 方法来查找并服务我们的 \xe2\x80\x9c.json \xe2\x80\x9d 文件来自这个新更新的 HASH/CID 文件夹名称,我们仍然可以通过常规英文名称来引用其中的各个文件。这意味着我们\xe2\x80\x99d 可以开始了。
\n这是否是一个好的方案,我们绝对可以讨论,但我首先想回到我最初的问题/担忧,那就是我想确保我们是唯一可以更新内容的人我们的文件夹 - 并且没有其他人有权这样做。 …
我不断收到此错误:
ImportError: cannot import name 'QWebView'
Run Code Online (Sandbox Code Playgroud)
...对于这段代码:
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebPage
Run Code Online (Sandbox Code Playgroud)
-我在运行 High Sierra 10.13.3 的 Mac 上
-我安装了 Python 3.6.4 -
安装了 PyQt5(这样做了几次,包括使用 HomeBrew)
我很确定一切都安装正确,因为当我运行时python3 -m pip install PyQt5它告诉我Requirement already satisfied:
MacBook-Pro-3:~ ericj36$ python3 -m pip install PyQt5
Requirement already satisfied: PyQt5 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
Requirement already satisfied: sip<4.20,>=4.19.4 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from PyQt5)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行我的代码时,我得到的完整错误是:
...line 4, in <module>
from PyQt5.QtWebEngineWidgets import QWebView
ImportError: cannot import name …Run Code Online (Sandbox Code Playgroud) 当我将文件文件夹上传.jpg到 IPFS 时,我会得到该文件夹的哈希值 - 这很酷。
但是该文件夹中的每个单独文件也会被散列吗?如果是这样,我如何获取每个文件的哈希值?
我基本上希望能够上传一大堆文件 - 比如 500 个图像 - 并一次性或以编程方式完成所有操作,并将每个文件的哈希值返回给我。
有办法做到这一点吗?
我\xe2\x80\x99m 尝试创建一个包含 10 个整数的数组 ( uint256) 并对其初始起始值进行硬编码 - 但我不断收到以下错误(奇怪地谈论uint16,即使我特别要求uint256):
TypeError: Type uint16[10] memory is not implicitly convertible to expected type uint256[] memory.\nRun Code Online (Sandbox Code Playgroud)\n这里\xe2\x80\x99是我的代码:
\nuint256 memory myNumbersArray = new uint256[](10);\nmyNumbersArray = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]; \nRun Code Online (Sandbox Code Playgroud)\n我也尝试过这样的方法:
\nuint256[10] memory myNumbersArray;\nmyNumbersArray = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900]; \nRun Code Online (Sandbox Code Playgroud)\n结果相同。
\n(我想我也尝试过用一行来完成整个事情。)
\n我收到此错误是因为 I\xe2\x80\x99m 分配的实际值太小,以至于它们不需要\xe2\x80\x99t 类型吗uint256?
\n我需要知道这一点,因为该数组应该保存的未来 …
blockchain ×3
ethereum ×3
swift ×3
ios ×2
ipfs ×2
objective-c ×2
solidity ×2
addobserver ×1
arrays ×1
cncontact ×1
delegates ×1
file-sharing ×1
hash ×1
ios9 ×1
iphone ×1
pyqt5 ×1
python ×1
static ×1
var ×1
xcode9 ×1