对于可变数量的参数,这里是lua.org的一个例子:
function print (...)
for i,v in ipairs(arg) do
printResult = printResult .. tostring(v) .. "\t"
end
printResult = printResult .. "\n"
end
Run Code Online (Sandbox Code Playgroud)
从上面的示例代码中,如果我打电话
打印("A","B",零,零,"D")
只传入"A"和"B",忽略自第一个零以来的所有参数.因此在这个例子中打印结果是"AB".
是否有可能获得包括nils在内的所有论据?例如,我可以检查参数是否为nil,如果是,我可以将"nil"打印为字符串.所以在这个例子中,我实际上想要打印
AB nil nil D
Run Code Online (Sandbox Code Playgroud)
当然,在对代码进行一些修改之后.但我的问题是......最重要的是,即使其中一些是nils,如何得到所有的论点?
对于下面的 Lua 代码:
local function foo(x, y, z)
local x = x or true
local y = y or 1234
z = z or "default"
end
Run Code Online (Sandbox Code Playgroud)
一直以为函数里面这三行的意思是:
如果 x/y/z 为零,则 x/y/z 设置为 true/1234/“默认”。否则,它保持原样。因此,我在很多地方都有这样的一行来将参数设置为某个默认值,以防它可能作为 nil 传递给函数。
但是,在我的实验中似乎并不完全正确。我不确定我从哪里学到了这个 Lua 编码概念。如何正确地做到这一点?
我有一个自定义单元格的表格视图,我尝试通过Color Blended Layer在模拟器中检查单元格内的所有子视图为绿色来优化它.
当UILabel单元格中的背景设置为白色时:
let title = UILabel()
contentView.addSubview(title)
title.background = UIColor.whiteColor()
title.text = "Hi, how are you?"
Run Code Online (Sandbox Code Playgroud)
这个UILabel子视图在模拟器中会变成绿色,这很好.但是,如果我将文本更改为某些中文:
title.text = "??"
Run Code Online (Sandbox Code Playgroud)
UILabel子视图将变为红色.这篇SO帖子提供了有关情况的一些解释.实际上有解决方案吗?
我可以使用计时器,例如NSTimer在Vapor(服务器端Swift)中吗?
我希望用Vapor编写的服务器可以偶尔主动执行一些任务.例如,每15分钟从网上轮询一些数据.
如何用Vapor实现这一目标?
我试图通过使用获取页面的所有帖子
https://graph.facebook.com/PAGE_ID/feed
它就像一个魅力.我可以获得每个帖子的所有信息,除了相同的数量.
Feed会为每个帖子返回"赞",但它会显示前25个喜欢的相似信息.我不知道一个帖子的计数.
我在网上找到的最接近的解决方案是在请求帖子信息时设置"summary = 1",例如
https://graph.facebook.com/POST_ID/likes?summary=1
这将返回一个摘要字段,显示此帖子的相同计数,这正是我需要的.
但是,如果这是解决问题的唯一方法,我必须为每个帖子提供额外的网络请求,只是为了获得类似的计数.我最初只能通过一个网络请求完成这项工作,但现在我已经进行了1 + N次(页面提要中的帖子数量)的网络请求.
我想我一定错过了什么.FB必须有一些方法可以在Feed信息中嵌入类似的计数.就像FB应用程序或网站一样,所有帖子都会立即显示相同的数量,无法再进行N次网络请求以获得每个帖子的相同数量.
希望有人能提供帮助.非常感谢提前.
我想使用UITableViewCellStyle.Subtitle样式作为默认表格单元格.我发现一个答案的SO回答是这样的:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell?
if (cell != nil) {
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我可以成功使用Subtitle单元格样式.但是,我开始认为可能出现问题?为什么要创建新单元格cell != nil?这样,你永远不会重复使用细胞,不是吗?此外,我可以打电话
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
Run Code Online (Sandbox Code Playgroud)
我有同样的结果.为什么要将可重复使用的单元格出列然后创建一个新单元?什么是实现细胞再利用的正确方法,并在当时使用UITableViewCellStyle.Subtitle细胞的样式?
UPDATE
请注意,第一段代码cell != nil不是cell == nil.如果我改变cell == nil,代码将不会使用该Subtitle样式.我认为第一个有效,因为它总是创建具有Subtitle风格的新单元格.
在 Swift 2 中,我可以somefile.txt毫无问题地从下面的代码中加载数据:
let fileManager = FileManager.default
let urls = fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask)
let appDataURL = urls.last.appendingPathComponent("appData")
let fileDestinationUrl = appDataURL!.appendingPathComponent("somefile.txt")
var dataString = ""
do {
dataString = try String(contentsOfURL: fileDestinationUrl) //<-- error here
print("dataString=\(dataString)")
} catch let error as NSError {
print("Failed reading data in appData Directory, Error: \(error.localizedDescription)")
}
Run Code Online (Sandbox Code Playgroud)
但是,在 Swift 3 中,XCode 在一行中给出了一个错误dataString = try String(contentsOfURL: fileDestinationUrl):
Argument labels '(contentsOfURL:)' do not match any available overloads
Run Code Online (Sandbox Code Playgroud)
如何修复此错误?在 Swift 3 中读取文本文件的正确方法是什么?
我正在 Swift 中构建一个 OS X 应用程序:
(1) 运行应用程序
(2) 应用程序启动,应用程序图标出现在 Dock 中。
(3) 单击 Dock 中的应用程序图标 <-- 我的应用程序如何获得此操作的通知?
我希望在用户在应用程序运行时单击 Dock 中的应用程序图标后做一些事情。如何获得此操作的通知?
我使用以下代码查看设备是否处于横向模式:
UIDevice.currentDevice().orientation.isLandscape.boolValue
Run Code Online (Sandbox Code Playgroud)
但是,如果我在启动应用程序之前将设备置于横向模式,则可以正常工作,之后再viewDidLoad调用此代码行,则始终返回false。
如果我改用这个:
interfaceOrientation.isLandscape
Run Code Online (Sandbox Code Playgroud)
它返回true,这是正确的,但是编译器正在显示警告interfaceOrientation was deprecated in iOS 8.0。
启动应用后立即获得设备定位的正确方法是什么?
请考虑以下代码:
class myManager {
var aView: UIView!
func createView() {
aView = UIView()
}
func removeView() {
aView = nil // anything else?
}
}
Run Code Online (Sandbox Code Playgroud)
如果我创建UIView这样的,后来我想删除它,这是正确的方法吗?我应该注意什么?
swift ×5
ios ×3
lua ×2
swift2 ×2
uitableview ×2
function ×1
macos ×1
objective-c ×1
opengraph ×1
orientation ×1
parameters ×1
swift3 ×1
uikit ×1
uilabel ×1
uiview ×1
vapor ×1