我正在用Swift的Codable替换旧的JSON解析代码,并且遇到了一些麻烦.我想这不是一个可编码的问题,因为它是一个DateFormatter问题.
从结构开始
struct JustADate: Codable {
var date: Date
}
Run Code Online (Sandbox Code Playgroud)
和一个json字符串
let json = """
{ "date": "2017-06-19T18:43:19Z" }
"""
Run Code Online (Sandbox Code Playgroud)
现在让我们解码
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let data = json.data(using: .utf8)!
let justADate = try! decoder.decode(JustADate.self, from: data) //all good
Run Code Online (Sandbox Code Playgroud)
但是,如果我们更改日期以使其具有小数秒,例如:
let json = """
{ "date": "2017-06-19T18:43:19.532Z" }
"""
Run Code Online (Sandbox Code Playgroud)
现在它打破了.日期有时会以小秒数回归,有时则不会.我以前解决它的方式是在我的映射代码中我有一个转换函数,它尝试使用和不使用小数秒的dateFormats.我不太确定如何使用Codable来处理它.有什么建议?
我查看了NSString类的引用,但我似乎无法找出是否有一个字符串,我可以使用什么方法来检查特定字符是否在字符串内.
例如,如果我的字符串是
NSString * string = "123.32"
if ([string hasString:@"."]) {
//do stuff
Run Code Online (Sandbox Code Playgroud)
所以我并不关心它所处的指数,但它是否有它:-)
所以这是一个愚蠢的问题,但由于某些原因,这对我不起作用.这是我正在尝试做的一个小程序的一小部分,我正在调试但是一个简单的if语句由于某种原因不起作用.这是以下代码:
System.out.println("Enter a command (Enqueue, Dequeue, or Quit): ");
String expr = input.next();
System.out.println(expr);
if (expr=="Enqueue") {
System.out.println("Enqueue");}
Run Code Online (Sandbox Code Playgroud)
所以它应该只是抓取输入,如果我在提示符中键入Enqueue,它应该打印出来.问题是它没有这样做.当我检查变量expr的值时,它确实显示为字符串Enqueue但它不会进入并打印它.....奇数.我不知道有什么蠢事吗?
我一直在努力解决一个问题,我很确定这会让我采用类型擦除技术,但我不是 100% 确定。我尝试了几次不同的时间,感觉很接近,但最终都失败了。我会尽量简化我的问题。假设你有一个实体
struct Expense {
var id: Int?
var amount: Double = 0
}
Run Code Online (Sandbox Code Playgroud)
和一个等效的领域对象
class RealmExpense: Object {
let id = RealmOptional<Int>()
let amount = RealmOptional<Double>()
var entity: Expense {
return Expense(id: id.value, amount: amount.value)
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我可以使用实体变量将 RealmExpense 转换为 Expense。
然后,我有另一个协议
protocol ExpenseRepository: class {
func getAll() -> [Expense]
//...other CRUD methods
}
Run Code Online (Sandbox Code Playgroud)
最后,一堂课
class ExpenseRealmRepository: ExpenseRepository {
private let realm = try! Realm()
func getAll() -> [Expense] {
return realm.objects(RealmExpense.self).flatMap { $0.entity }
}
func insert(item: …
Run Code Online (Sandbox Code Playgroud) 您好我正在教自己C并通过K&R书,我遇到了一些麻烦(我正在运行OS X).这是第1.5.1节"文件复制",它应该将一个字符作为输入,然后输出该字符.这是代码:
#include <stdio.h>
/* -- Copy input to output -- */
int main(void)
{
int c;
c = getchar();
while ( c != EOF ) {
putchar(c);
c = getchar;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我认为我的问题不在于代码本身,而在于编译和运行.首先,在编译时我得到以下错误
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c: In function ‘main’:
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:12: warning: assignment makes integer from pointer without a cast
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:16: warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)
然后当我运行输出文件(在终端中)它有一个小空间,然后当我输入一个字母时,说我输入
一个
然后我点击Return
我得到一个新的一行.如果我然后点击一个新密钥,屏幕就会开始变得疯狂,并在整个地方出现问号.
我不确定我是否有多大意义,但我发现这是一个奇怪的问题.非常感谢你提前
所以我正在学习如何使用类和python,我正在创建一个简单的程序来执行有理数的算术运算.我正在创建一个名为ArithmeticOperations的类.在这个类中,我有一个主函数定义,它提示用户输入2个有理数的分子和分母,然后根据用户的选择执行和,差,乘积或商.操作在单独的功能中执行.现在我已经创建了main函数和product函数,但是当我运行它时,我得到一个错误
TypeError:product()只需要5个参数(给定6个参数)
我确信这很简单,但我是新手,所以我在调试时遇到了一些麻烦.这是我目前的计划:
class ArithmeticOperations:
# Given numbers u0, v0, and side, design a pattern:
def product(self,n1, d1, n2,d2):
self.numerator = n1*n2;
self.denominator = d1*d2;
print n1,'/',d1,'*',n2,'/',d2,'=',self.numerator,'/',self.denominator;
def main(self):
n1 = input('Enter the numerator of Fraction 1: ');
d1 = input('Enter the denominator of Fraction 1: ');
n2 = input('Enter the numerator of Fraction 2: ');
d2 = input('Enter the denominator of Fraction 2: ');
print '1: Add \n 2: Subtract\n 3: Multiply\n 4: Divide' ;
question = input('Choose an …
Run Code Online (Sandbox Code Playgroud) 我开始学习ruby并试图找出一种方法,如果我有一个16个数字的数组,只使用每种方法一次打印这些数字4.我可以通过循环很容易地做到这一点,但我对Ruby中的每个方法都缺乏充分的理解,所以这给我带来了一些麻烦.
我有以下内容:
x=[*1..16]
index=0
x.each do |element|
puts element[index]
index=index+3
end
Run Code Online (Sandbox Code Playgroud)
现在显然这是完全错误的,我知道,但我想在这里放一些东西.一点建议会很棒.
谢谢