我使用代码来创建视图(带子视图),UIViewController这就是我的工作方式:
覆盖 loadView()
class MYViewController: UIViewController {
var myView: MyView! { return self.view as MyView }
override func loadView() {
view = MyView()
}
}
Run Code Online (Sandbox Code Playgroud)以下是我创建自定义视图的方法:
class MyView: UIView {
// MARK: Initialization
override init (frame : CGRect) {
super.init(frame : frame)
addSubviews()
setupLayout()
}
convenience init () {
self.init(frame:CGRect.zero)
}
required init(coder aDecoder: NSCoder) {
fatalError("This class does not support NSCoding")
}
// MARK: Build View hierarchy
func addSubviews(){
// add subviews
}
func setupLayout(){
// Autolayout …Run Code Online (Sandbox Code Playgroud) 我想将一个字符串转换为double并保持相同的值:
let myStr = "2.40"
let numberFormatter = NSNumberFormatter()
numberFormatter.locale = NSLocale(localeIdentifier: "fr_FR")
let myDouble = numberFormatter.numberFromString(myStr)?.doubleValue ?? 0.0
Run Code Online (Sandbox Code Playgroud)
myDouble现在
Double? 2.3999999999999999
Run Code Online (Sandbox Code Playgroud)
那么如何将"2.40"转换为精确到2.40为双?
更新:
即使转换后舍入也似乎不起作用
我不想打印,我想计算,重要的是数字应该是正确的,这是货币计算和费率
我刚刚来自关系数据库学校,处理JSON数据库对新来者来说并不是一件容易的事.我有这个结构来存储用户:
{
"users" : {
"0CcKvNkOm5fVqL" : {
"birthday" : 564688000,
"country" : "US",
"email" : "email@live.com",
"firstName" : "John",
"gender" : "male",
"isOnline" : true,
"lastLoginDate" : 1468166460486,
"lastName" : "Paul",
"learningLanguages" : [ {
"language" : "fr_FR",
"levelID" : 2
} ],
"profileImage" : "https://firebasestorage.googleapis.com/image.jpg",
"providerID" : "Firebase",
"registrationDate" : 1468168460486,
"speakingLanguages" : [ {
"language" : "es_ES",
"levelID" : 7
} ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中提供了一个搜索屏幕,用户可以搜索其他用户,他们可以组合所有这些过滤器参数:
例:
获取以下10用户starting from index 0:
male database-design ios firebase swift firebase-realtime-database
我想实现这个UITextField设计:
在Zeplin中,这里是阴影的属性:
我试过了什么?
override func layoutSubviews() {
super.layoutSubviews()
self.layer.cornerRadius = self.frame.size.height/2
self.addInnerShadow()
}
private func addInnerShadow() {
let innerShadow = CALayer()
innerShadow.frame = bounds
// Shadow path (1pt ring around bounds)
let path = UIBezierPath(rect: innerShadow.bounds.insetBy(dx: -1, dy: -1))
let cutout = UIBezierPath(rect: innerShadow.bounds).reversing()
path.append(cutout)
innerShadow.shadowPath = path.cgPath
innerShadow.masksToBounds = true
// Shadow properties
innerShadow.shadowColor = UIColor.black.cgColor
innerShadow.shadowOffset = CGSize(width: 0, height: 3)
innerShadow.shadowOpacity = 0.05
innerShadow.shadowRadius = 3
innerShadow.cornerRadius = self.frame.size.height/2
layer.addSublayer(innerShadow)
}
Run Code Online (Sandbox Code Playgroud)
结果:
更新:
override func …
如何构建查询以通过静态文本获取包含另一个元素的元素。
示例:获取包含带有文本“cool cell”的标签的第一个表格单元格
我需要它,因为我有不同的单元格,我想获得一个包含特定文本的单元格。请注意,我对获取单元格很感兴趣,因为我需要确保该单元格包含其他元素。目标是确保标题为“I'm a cell”的单元格也有一个带有文本“cool”的标签
我正在尝试导入大约 80k 对象的大型数据集。我正在尝试效仿苹果的例子
\n\n我有两个问题:
\n\n // taskContext.performAndWait runs on the URLSession\'s delegate queue\n // so it won\xe2\x80\x99t block the main thread.\nRun Code Online (Sandbox Code Playgroud)\n\n但就我而言,我没有使用 URLSession 来获取 JSON。该文件与应用程序捆绑在一起。在这种情况下,如何确保导入不会阻塞主线程。我应该创建一个自定义队列吗?有什么例子吗?
\n\n\n\n所以我想要实现的是:
\n\nContactBook请不要导入任何内容,因为我们已经导入了 JSON。ContactBook则创建一个并将所有 70kContact对象导入contacts到ContactBook. 这应该像示例中那样批量发生,并且不应该阻塞 UI。我尝试过的:
\n\nprivate func insertContactbookIfNeeded() {\n let fetch: NSFetchRequest<Contactbook> = ContactBook.fetchRequest()\n let contactBookCount = (try? context.count(for: fetch)) ?? …Run Code Online (Sandbox Code Playgroud) 我只想获取具有Firebase的用户的创建日期和最后登录日期,我的计划是让用户使用Facebook登录,然后注册并添加新信息,并将用户保存在具有创建日期的实时数据库中,上次登录日期,因此在保存日期后如何使日期与Firebase系统保持不同步,或者我应该只使用这些f FIRUser而不将其保存在实时数据库中
问题1:如何从FIRUser获取创建和上次登录的日期,如仪表板中所示(请参见下图)
问题2:一旦获得这些日期,我会将其保存在实时数据库中,那么如何使上次登录日期保持同步?
ios firebase swift firebase-authentication firebase-realtime-database
我有一个包含数组的数组Double,如截图中所示:
我的目标是获得Double每个数组元素乘法的总和.这意味着,我想将每个数组的所有元素相乘然后,在我的情况下,我将得到3个值,所以我得到它们的总和.
我想用reduce,flatMap?或任何优雅的解决方案
我试过了什么?
totalCombinations.reduce(0.0) { $0 + ($1[0]*$1[1]*$1[2]) }
Run Code Online (Sandbox Code Playgroud)
但只有当我知道包含双精度的数组的大小时,这才起作用.
我不知道我是否需要[weak self]在这种情况下使用?
HTTPClient.swift:
struct HTTPClient {
let session = URLSession.shared
func get(url: URL, completion: @escaping (Data) -> Void) {
session.dataTask(with: url) { data, urlResponse, error in
completion(data) // assume everything will go well
}.resume()
}
}
Run Code Online (Sandbox Code Playgroud)
服务.swift
struct Service {
let httpClient: HTTPClient
init(httpClient: HTTPClient = HTTPClient()) {
self.httpClient = httpClient
}
func fetchUser(completion: @escaping (User) -> Void) {
httpClient.get("urlToGetUser") { data in
// transform data to User
completion(user)
}
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型.swift
class ViewModel {
let service: …Run Code Online (Sandbox Code Playgroud) 我已将一些转换PHAsset为UIImage:
PHImageManager *manager = [PHImageManager defaultManager];
[manager requestImageForAsset:asset
targetSize:PHImageManagerMaximumSize
contentMode:PHImageContentModeDefault
options:requestOptions
resultHandler:^void(UIImage *image, NSDictionary *info) {
convertedImage = image;
[images addObject:convertedImage];
}];
Run Code Online (Sandbox Code Playgroud)
现在我想做那样的事情:
[selectedAssets removeObject:image];
Run Code Online (Sandbox Code Playgroud)
其中selectedAssets是的阵列PHAsset和image是UIImage
所以我已经实现了isEqual:
- (BOOL)isEqual:(id)other {
if (other == self)
return YES;
if (!other || ![[other class] isEqual:[self class]])
return NO;
NSData *data1 = UIImagePNGRepresentation(self.image);
NSData *data2 = UIImagePNGRepresentation(((TINSelectedImage*)other).image);
return [data1 isEqual:data2];
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用!
ios ×10
swift ×8
firebase ×2
arrays ×1
closures ×1
core-data ×1
double ×1
import ×1
json ×1
nsurlsession ×1
objective-c ×1
phasset ×1
reduce ×1
retain-cycle ×1
shadow ×1
swift2.2 ×1
ui-testing ×1
uiimage ×1
uitextfield ×1