我有一个包含 Swift 和 Objective-C 代码的项目。在我当前的项目中,#import "Project-Swift.h"如果我添加新的 Swift 模块,文件不会刷新。
#import "Project-Swift.h" // does not refresh if I add .swift files
Run Code Online (Sandbox Code Playgroud)
所以在 Objective-C 领域中,swift 代码是不可用的。文件存在,但只包含默认#defines等。没有项目相关的东西。
清除缓存、重建、删除派生数据无济于事。
我有一些旧的 Swift 代码,用于编译和工作,我使用 .append 动态构建数据结构。升级到几个较新的编译器版本后,我收到了可怕的“调用中的额外参数”错误。我将代码简化为:
struct EHSearch {
let EHcategory : String = ""
let EHname : String = ""
}
var myEHSearch = [EHSearch]()
// Call to dynamically append the results
// Extra argument: 'EHcategory' in call
myEHSearch.append(EHSearch(EHcategory: "Food", EHname: "Joes Crab Shack"))
Run Code Online (Sandbox Code Playgroud)
到目前为止,我在搜索导致此问题的原因发生变化时看不到任何内容,因此在此寻求指导。
我正在使用基于 OSX 的 Playground。当我尝试时,NSFileManager.defaultManager().currentDirectoryPath它返回/这不是我的工作目录。
我是 mac OS 开发的新手,所以请原谅我的任何基本问题,但相信我,我已经做了很多研究,但仍然有点卡住。
所以我试图访问当前用户的桌面内容。
在操场上很容易,只需使用
let homeURL = FileManager.default.homeDirectoryForCurrentUser
let desktopURL = homeURL.appendingPathComponent("Desktop/")
let contents = try fileManager.contentsOfDirectory(atPath:desktopURL.path)
Run Code Online (Sandbox Code Playgroud)
它显示桌面上的所有内容。但是当我在一个项目中运行类似的代码时。
let homeURL = FileManager.default.homeDirectoryForCurrentUser
Run Code Online (Sandbox Code Playgroud)
它返回我的应用程序的容器。
file:///Users/myUserName/Library/Containers/AppIdentifier/Data/
并且
let contents = try fileManager.contentsOfDirectory(atPath: desktopURL.path)不会返回任何内容。
好吧,我然后我用
删除最后一个路径组件
同时获取主路径以获取我的 URL 直到我的用户名
let homeURL = FileManager.default.homeDirectoryForCurrentUser.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent()
Run Code Online (Sandbox Code Playgroud)
当我调试它时,它返回
file:///Users/myUserName
如我所愿。但是当我运行代码时,内容变量仍然为零。
下一次尝试:
我在互联网上搜索以检查获取目录路径的替代方法。所以我遇到了
NSOpen面板
我从 Panel 获取文件夹的 URL 并使用该 URL 检查其中的内容。它工作正常
这是代码
let homeURL = FileManager.default.homeDirectoryForCurrentUser
let desktopURL = homeURL.appendingPathComponent("Desktop/")
let contents = try fileManager.contentsOfDirectory(atPath:desktopURL.path)
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么我不能直接访问内容。我已经尝试了很多次。在项目中,我无法enter code here直接从(某种)硬编码 URL 获取内容。
如果需要任何其他信息,请告诉我。
在将视图添加到我的应用程序之前,我已经创建了一个小型演示游乐场来使其工作。
我有一个滚动视图,它将包含许多水平滚动的按钮。我知道这些按钮需要进入滚动视图中的容器视图,并且也创建了它。我最初使用自动布局约束来创建所有这些,但现在尝试使用常量来确保内容视图大于滚动视图。但是,按钮仍然不会滚动......我错过了什么吗?滚动视图不适用于自动布局吗?
我也在我的 iPad 上以编程方式执行所有这些操作,因此不幸的是,使用界面构建器的解决方案不是一种选择...
这是完整的代码:
import UIKit
import PlaygroundSupport
class FilterViewController: UIViewController {
var filterView: UIView!
var scrollView: UIScrollView!
var containerView: UIView!
override func loadView() {
filterView = UIView()
view = filterView
view.backgroundColor = #colorLiteral(red: 0.909803926944733, green: 0.47843137383461, blue: 0.643137276172638, alpha: 1.0)
scrollView = UIScrollView()
scrollView.backgroundColor = #colorLiteral(red: 0.474509805440903, green: 0.839215695858002, blue: 0.976470589637756, alpha: 1.0)
view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.topAnchor.constraint(equalTo:view.topAnchor, constant:40).isActive = true
scrollView.leadingAnchor.constraint(equalTo:view.leadingAnchor).isActive = true
scrollView.widthAnchor.constraint(equalTo:view.widthAnchor).isActive = true
scrollView.heightAnchor.constraint(equalToConstant: 200).isActive = true
scrollView.isScrollEnabled = true
containerView = UIView() …Run Code Online (Sandbox Code Playgroud) uiscrollview ios programmatically-created swift swift-playground
我的机器上有几个 Swift Playgrounds 无法自动更新。我可以从编辑器菜单中手动选择“运行 Playground”,它会运行当时 Playground 中的内容,但当我键入新代码时它永远不会更新。我尝试过清除编译缓存"$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang.$(whoami)/ModuleCache"、重新启动 Xcode、重新启动模拟器服务,甚至重新启动我的 Mac,但这些都无法解决问题。我可以查看什么来让我的 Playground 自动更新?
我创建了一个新项目并使用 pods 来安装RxSwift. 然后我创建了一个游乐场并编写了以下代码:
import UIKit
import RxSwift
import PlaygroundSupport
var name = "hello"
let names = Variable(["Good"])
Run Code Online (Sandbox Code Playgroud)
但控制台显示此错误:
Playground 执行失败:
错误:无法查找符号:__
T07RxSwift8VariableCACyxGxcfC __T07RxSwift8VariableCMa
希望这不是一个愚蠢的问题,因为我在任何地方都找不到它。
我在 Swift Playground 中编程并运行一个很长的进程。它已经编译并运行(我可以看到日志显示)。我怎样才能停止这个过程?
到目前为止我发现的唯一方法是杀死整个 Xcode。
有没有办法打开Swift Playground而无需关闭Xcode并重新启动?我没有看到它在任何地方可用,除非Xcode从头开始.
如何在for循环中使用两个变量?
for j,k in zip(range(x,0,-1),range(y,-1,-1)
Run Code Online (Sandbox Code Playgroud)
我想在Swift中实现它.
swift-playground ×10
swift ×9
ios ×3
macos ×2
xcode6 ×2
cocoa ×1
cocoapods ×1
objective-c ×1
rx-swift ×1
swift2 ×1
uiscrollview ×1
xcode ×1