我是一个Swift新手,我正试图使用具有可选属性的Structs.我已经做了很多搜索并得到了一些有效的东西,但它感觉非常低效,所以想知道是否有更好/更易于管理的方式来实现我的目标.
我想使用Structs来代表一家公司,但我事先并不知道任何特定业务可能具有哪些属性组合.这似乎意味着我必须为每个可能的参数组合创建一个init().
这是一个简化的例子(我有更多的属性):
import Foundation
struct Business {
let name : String
var web : String?
var address: String?
// just the business name
init(busName: String) {
self.name = busName
}
// business name + website
init(busName: String, website: String) {
self.name = busName
self.web = website
}
// business name + address
init(busName: String, address: String) {
self.name = busName
self.address = address
}
// business name + website + address
init(busName: String, website: String, address: String) {
self.name …Run Code Online (Sandbox Code Playgroud) 我有一组业务对象。每个 Business 对象都包含一组键值对,其中一个元素可以是 ContentBlocks 对象的嵌套数组。
var masterArray = [
Business(busName: "Dave's Cafe", busId: 1, website: "http://www.davescafe.com", latLong: (45.541, -45.609),
actions: [["title": "About Us", "contentId": "123", "actionType": "content"],
["title": "Website", "url": "http://www.davescafe.com", "actionType": "web"]],
contentBlocks:[
ContentBlock(busName: "Dave's Cafe", busId: 1, contentId: "123", title: "Testola!", body: "Hello there!")
]),
Business(busName:...
]
Run Code Online (Sandbox Code Playgroud)
我可以使用以下内容过滤数组以返回与唯一匹配的特定企业busId:
let rtnArray = masterArray.filter{$0.busId == id}
if rtnArray.count == 1{
return rtnArray[0]
} else {
return // feedback that no matches were found
}
Run Code Online (Sandbox Code Playgroud)
此外,我想通过过滤唯一的内容来返回特定的内容块contentId(如有必要,我也可以传递busId …
我想构建一个应用程序内收件箱(又名消息中心)作为向我的应用程序用户存储消息的中心位置。考虑单向电子邮件通知,而不是用户-用户聊天。这是我想到的事情(取自维多利亚的秘密应用程序):
Urban Airship有一款产品可以满足我的需求,Intercom.io 也很接近(尽管它更侧重于聊天而不是异步电子邮件风格的消息)。但是,我在我的应用程序的其他地方使用 Firebase,所以我认为对应用程序内收件箱使用相同的 SDK 而不是引入另一个 3rd 方是有意义的。
我的问题是:有谁知道以下逻辑是否有意义(我首先使用 Swift 在 iOS 上进行开发)?
理想情况下,如果收到消息时应用程序在后台,我想触发通知(+ 徽章更新),当应用程序在前台时触发应用程序内通知。我假设我可以用 FCM/ Notifications做到这一点。
过去有没有人创造过这种东西,或者有任何我应该注意的建议陷阱?
ios firebase google-cloud-messaging firebase-cloud-messaging
我正在使用Cloud Functions for Firebase:
我对第三方API的调用使用请求Node.js模块,并包含getInfoFromApi()在index.js中的function()中.
我遇到的问题是辅助函数调用的执行始终在15-20秒之间.注意:云功能本身在400 ms范围内始终如一地完成执行.
通过将简单的注释记录到控制台,我可以看到函数何时启动,何时调用辅助函数以及何时收到第三方的响应,所以我想我可以看到发生了什么.
粗略地说,时间看起来像这样:
getInfoFromApi()调用函数(!)我的问题:
你可以在这里看到index.js的简化要点:https://gist.github.com/anonymous/7e00420cf2623b33b80d88880be04f65
以下是Firebase控制台的示例,其中显示了示例时间.注意:输出与上面的代码略有不同,因为我简化了上面的代码以帮助理解.

我已经做了很多搜索SO和谷歌试图得到一个答案,但我没有能够把拼图的所有部分放在一起,所以任何帮助/指针都会很棒.
我想构建一个在进入iBeacon区域时检查Web服务的应用程序.简单的示例用例是这样的:
用户在后台走进带有应用程序的iBeacon配备商店
应用程序向Web服务器发出请求以检查用户ID是否为成员(该应用程序已被授予用户向服务器发送用户ID的权限),而不是通知用户.
3A.服务器发回"真实"响应
4A.应用程序发送"我们今天有特别会员促销"通知锁屏.
要么
3B.服务器发回"错误"响应
4B.应用程序保持沉默(不通知用户)
仅供参考,这个答案似乎表明可以在后台发送URL请求:在后台 运行URL请求
我是一个快速的新手,并试图让选项工作.我已经做了很多谷歌搜索,阅读Apple Docs等,但我正在努力从我的ViewController这个(简化)片段:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "segueToWebView") {
// check what we're passing around
print(sender!.urlString) // Optional("http://www.bbc.co.uk")
// do some url validation etc
var destUrl:String
if sender!.urlString == nil{
destUrl = "http://www.google.com"
} else {
destUrl = sender!.urlString // *** Error here ***
}
let targetWebViewController:GDWebViewController = segue.destinationViewController as! GDWebViewController
targetWebViewController.loadURLWithString(destUrl)
targetWebViewController.showsToolbar = true
targetWebViewController.title = sender!.busName // this works correctly too (so isn't that a String?)
}
}
Run Code Online (Sandbox Code Playgroud)
错误Cannot assign value of …
我在iOS应用中使用“附近的消息” API接收了由Eddystone信标触发的消息,它运行良好。我正在使用Firebase的实时数据库作为应用程序的后端。由于Firebase的缓存非常棒,因此我能够使该应用程序在离线状态下运行良好。
我的问题是,是否有人知道/使用一种技术(可能与Firebase结合使用)来预先缓存与信标关联的附件(例如,将所有Eddystone附件缓存在特定名称空间中),以便在应用程序没有连接时可以有效地获取信标附件上网。
任何探索领域的建议都将是不错的。