我在Python中使用条带库进行信用卡收费.我使用customerID来充电而不是令牌,因为我想重新使用卡而不是每次都要求它.成功过程工作得很好,但是,如果我创建一个错误条件,则永远不会抛出"except".我正在使用无效的客户ID测试故障状态.
服务器日志显示以下错误:"InvalidRequestError:Request req_8949iJfEmeX39p:No such customer:22"但是再次在try/except中处理.
class ChargeCustomerCard(webapp2.RequestHandler):
def post(self):
stripe.api_key = stripeApiKey
customerID = self.request.get("cust")
amount = self.request.get("amt")
try:
charge = stripe.Charge.create(amount=int(amount),currency="usd",customer=customerID,description=customerID)
except stripe.error.CardError, e:
output = {"result":e}
else:
output = {"result":"1"}
self.response.out.write(json.dumps(output))
Run Code Online (Sandbox Code Playgroud) 在尝试让 iCloud 文档存储在手表Watchkit Extension Cannot Read from iCloud上工作失败后,我尝试简单地使用密钥库。然而,这样做我得到:
NSUbiquitousKeyValueStore 不可用。
根据苹果公司的说法,这应该是“始终可用”的。因此,如果这个基本共享不能在手表上运行,那么文档内容当然也不能在手表上运行。
这是通过简单地使用以下命令生成的:
let keyStore = NSUbiquitousKeyValueStore()
Run Code Online (Sandbox Code Playgroud)
在 iPhone 上工作和文档一样完美。它也适用于手表的模拟器,但不适用于实际的手表。
需要明确的是,我不明白为什么我不能在实际手表上使用 iCloud 的键值存储。这些应该从 Watch OS 2 开始可用。
我相信我需要使用,ndb.delete_multi但我很困惑如何使它适用于一组特定的键,以及它是否是最有效的方法.将Python 2.7与Google App Engine结合使用.
首先,我正在收集我要删除的密钥.我不想删除所有内容,只删除1小时或更长时间的条目.为此,我首先收集符合此标准的密钥列表.
cs = ChannelStore()
delMsgKeys = []
for x in cs.allMessages():
current = datetime.datetime.now()
recordTime = x.channelMessageCreated
timeDiffSecs = (current - recordTime).total_seconds()
timeDiff = (timeDiffSecs/60)/60
if timeDiff >=1:
delMsgKeys.append(x.key.id())
ndb.delete_multi(?????)
Run Code Online (Sandbox Code Playgroud)
cs.allMessages()的定义:
def allMessages(self):
return ChannelStore.query().fetch()
Run Code Online (Sandbox Code Playgroud)
首先,这总体上是最有效的方法吗?其次,如何使用我用ndb.delete_multi语句创建的密钥列表?
---更新----
ndb.delete_multi的问题与我传递的密钥有关.在我上面发布的代码中,密钥应该存储如下:
delMsgKeys.append(x.key)
Run Code Online (Sandbox Code Playgroud)
用上面的ndb.delete_multi工作.
google-app-engine python-2.7 app-engine-ndb google-cloud-datastore
顶级:
let ref = FIRDatabase.database().reference()
var handler:FIRDatabaseHandle!
Run Code Online (Sandbox Code Playgroud)
从屏幕上看到的视图:
self.handler = self.ref.child("Requests").observe(.value, with: {(snapshot) in
Run Code Online (Sandbox Code Playgroud)
最后:
override func viewDidDisappear(_ animated: Bool)
{
super.viewDidDisappear(animated)
self.ref.removeObserver(withHandle: self.handler)
self.ref.removeAllObservers()
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当在另一个视图中更改数据库时,仍会调用上面VC中的观察者.我明白我不应该同时删除,但我正在尝试一切.从断点我可以看到删除代码正在触发,我也可以看到观察者只被调用一次.
在删除观察者时我错过了什么?
我试图通过选择器传递一个布尔对象.但是,即使我发送NO(Xcode 5 iOS 7),结果总是等于YES.
[self performSelectorOnMainThread:@selector(clearMessageElements:) withObject:@NO waitUntilDone:NO];
-(void)clearMessageElements:(BOOL)resetLastUpdate
Run Code Online (Sandbox Code Playgroud)
如果我在clearMessageElements的第一行放置一个断点,然后查看resetLastUpdate,尽管在上面的调用中传递了NO,但结果始终为YES.
更新:
我赞赏下面发送的回复.但是,我仍然有一个问题,虽然现在有点不同.boolValue确实会正确解释,但不会在通知中调用该方法.所以扩大:
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(clearMessageElements:)
name:@"appResigning"
object:@YES];
-(void)clearMessageElements:(NSNumber *)resetLastUpdate
{
NSLog(@"%hhd",[resetLastUpdate boolValue]);
}
Run Code Online (Sandbox Code Playgroud)
clearMessageElements现在可以使用我在这个问题顶部写的原始调用,但在NSSNotification中使用时,使用这种方法根本不调用该方法.但是,如果我删除@YES并用NIL替换它将执行该函数.所以我知道正在发送通知,但是在这里使用@YES的一些事情是阻止它执行该方法.
我正在使用Xcode 6 Swift和情节提要构建一个IOS应用。贝娄是我在File.swift中拥有的:
import Foundation
struct December {
let name : String
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的视图控制器中,我有:
import UIKit
class ViewControllerDecember: UITableViewController {
var december = [December] ()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.december = [December(name: "1"), December(name: "2"), December(name: "3"), December(name: "4"), December(name: "5"), December(name: "6"), December(name: "7"), December(name: "8"), December(name: "9"), December(name: "10"), December(name: "11"), December(name: "12"), December(name: "13"), December(name: "14"), December(name: "15"), December(name: "16"), December(name: "17"), December(name: …Run Code Online (Sandbox Code Playgroud) 我正在寻找 watchkit 扩展来从 iCloud 文档存储中读取文件。我从 iOS 应用程序编写了该文件,该应用程序也可以读取它。我正在利用共享类,因此代码是相同的。问题是在手表上,云容器的 URL 返回 nil。
static func readFromFile(fileName:String) -> String?
{
let fileManager = FileManager.default
var cloudURL = fileManager.url(forUbiquityContainerIdentifier: nil)
cloudURL = cloudURL?.appendingPathComponent("Documents/\(fileName)")
do
{
return try String(contentsOf: cloudURL!)
} catch {
print (error)
return nil
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,cloudURL在手表上是nil,但在手机上不是。为此,forUbiquityContainerIdentifier我检查了手表和手机使用相同的标识符。我还尝试直接输入名称,而不是使用 nil 并让它从权利中获取它。容器的格式:
iCloud.com.company.app
Run Code Online (Sandbox Code Playgroud)
据我了解,Watch OS 3 应该能够使用 iCloud。
更新:
我打印出来let token = fileManager.ubiquityIdentityToken并得到以下内容:
WatchKit Extension[390:687462] [default] [ERROR] 获取 ubiquityIdentityToken 时出错:Error Domain=NSCocoaErrorDomain Code=4099 “与名为 com.apple.bird.token 的服务的连接已失效。” UserInfo={NSDebugDescription=与名为 com.apple.bird.token 的服务的连接已失效。}
我创建了一个可重用的组件,它在表单中具有选择器、文本字段和按钮。但是,如果存在该按钮,则点击选择器字段不会转到选择器。相反,它执行按钮代码。文本字段工作正常。如果我删除按钮代码,选择器将出现正确的行为。那么问题是如何在这个组件中同时拥有这两个元素?请注意,预览添加了导航和表单,否则这些导航和表单将来自父视图。
var body: some View {
HStack {
if !showFee {
Spacer()
Button(action: {
withAnimation(.easeInOut(duration: 0.3)) {
self.showFee.toggle()
}
}) {
Image(systemName: "plus.circle")
.font(.largeTitle)
}
Spacer()
} else {
VStack(spacing:20) {
Picker(selection: $feeSelection, label: Text("Fee Type")) {
ForEach(0 ..< fees.count) {
Text(self.fees[$0])
}
}
TextField("Fee Amount: $", value: $feeAmount, formatter: NumberFormatter.currency)
.keyboardType(.decimalPad)
Divider()
Button(action: {
withAnimation(.easeInOut(duration: 0.3)) {
self.showFee.toggle()
}
}) {
Image(systemName: "trash.circle.fill")
.font(.largeTitle)
.foregroundColor(.red)
}
}
}
}
.padding()
}
}
struct FeeCell_Previews: PreviewProvider {
static var previews: …Run Code Online (Sandbox Code Playgroud) swift ×4
icloud ×2
cloudkit ×1
firebase ×1
ios ×1
ios7 ×1
objective-c ×1
python ×1
python-2.7 ×1
swiftui ×1
uitableview ×1
watchkit ×1
xcode6 ×1