在Swift 2中,我使用以下代码来扩展字符串变量,并能够生成sha1,sha256和md5.
移动到swift 3后,代码不再工作了!我试图转换它但遇到连续错误.
知道怎么解决这个问题?
extension NSData {
func hexString() -> String {
var string = String()
for i in UnsafeBufferPointer<UInt8>(start: UnsafeMutablePointer<UInt8>(bytes), count: length) {
string += Int(i).hexString()
}
return string
}
func MD5() -> NSData {
let result = NSMutableData(length: Int(CC_MD5_DIGEST_LENGTH))!
CC_MD5(bytes, CC_LONG(length), UnsafeMutablePointer<UInt8>(result.mutableBytes))
return NSData(data: result)
}
func SHA1() -> NSData {
let result = NSMutableData(length: Int(CC_SHA1_DIGEST_LENGTH))!
CC_SHA1(bytes, CC_LONG(length), UnsafeMutablePointer<UInt8>(result.mutableBytes))
return NSData(data: result)
}
func SHA256() -> NSData {
let result = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH))
CC_SHA256(bytes, CC_LONG(length), UnsafeMutablePointer(result!.mutableBytes))
return …Run Code Online (Sandbox Code Playgroud) 我需要将以下json传递给此函数,以便Shopify Api可以理解提交.
每次执行此代码时,都会收到一条错误消息,指出缺少必需参数.显然,我无法创建正确的变量格式并将其传递给服务器.
Shopify API期望通过POST传递以下json
{
"customer": {
"first_name": "Steve",
"last_name": "Lastnameson",
"email": "steve.lastnameson@example.com",
"verified_email": true,
"addresses": [
{
"address1": "123 Oak St",
"city": "Ottawa",
"province": "ON",
"phone": "555-1212",
"zip": "123 ABC",
"last_name": "Lastnameson",
"first_name": "Mother",
"country": "CA"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的发布代码:
let customer = [
"customer": [
"first_name": "Steve",
"last_name": "Lastnameson",
"email": "steve.lastnameson@example.com",
"verified_email": "true",
"addresses": [
[
"address1": "123 Oak St",
"city": "Ottawa",
"province": "ON",
"phone": "555-1212",
"zip": "123 ABC",
"last_name": "Lastnameson",
"first_name": "Mother",
"country": "CA",
], …Run Code Online (Sandbox Code Playgroud) 我正在使用LINQ来访问我的数据库表.有些表可能有(数十万)记录.
使用如下语句从表中读取:
var records = db.Logs;
Run Code Online (Sandbox Code Playgroud)
将使应用程序非常慢.它将立即加载所有记录.
我需要使用多个条件来过滤结果,例如:
if (UserID != null)
{
records = records.Where(r => r.User == UserID);
}
if (UserIP != null)
{
records = records.Where(r => r.IP == UserIP);
}
Run Code Online (Sandbox Code Playgroud)
问题是我从表中的第一次读取将带给我所有记录,并将使应用程序非常慢.
有没有办法在LINQ语句中创建条件(if,switch),就像我们以前的SQL语句一样?
这是多久以来创建的逻辑:
string sql = "SELECT * FROM Log WHERE 1=1";
if (UserID != null)
{
sql += " AND User = '" + UserID + "'";
}
if (UserIP != null)
{
sql += " AND IP = '" + UserIP + "'";
} …Run Code Online (Sandbox Code Playgroud)