小编iOS*_*eek的帖子

在Swift中为UIViewController定制UIView

我使用代码来创建视图(带子视图),UIViewController这就是我的工作方式:

  1. 覆盖 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)

design-patterns uiviewcontroller ios swift swift-protocols

5
推荐指数
1
解决办法
6432
查看次数

String to Double转换在Swift中失去了精度

我想将一个字符串转换为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为双?

更新:

即使转换后舍入也似乎不起作用

我不想打印,我想计算,重要的是数字应该是正确的,这是货币计算和费率

floating-point double nsnumberformatter ios swift2.2

5
推荐指数
1
解决办法
1768
查看次数

在Swift中使用过滤器的高级Firebase查询

我刚刚来自关系数据库学校,处理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

5
推荐指数
1
解决办法
2016
查看次数

UITextField中的内部阴影带圆角

我想实现这个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 …

shadow uitextfield ios swift

5
推荐指数
1
解决办法
649
查看次数

在 iOS UITesting 中获取包含另一个具有静态文本的元素的元素

如何构建查询以通过静态文本获取包含另一个元素的元素。

示例:获取包含带有文本“cool cell”的标签的第一个表格单元格

我需要它,因为我有不同的单元格,我想获得一个包含特定文本的单元格。请注意,我对获取单元格很感兴趣,因为我需要确保该单元格包含其他元素。目标是确保标题为“I'm a cell”的单元格也有一个带有文本“cool”的标签

ui-testing ios swift

5
推荐指数
1
解决办法
1285
查看次数

批量导入Core data中具有关系的大集

我正在尝试导入大约 80k 对象的大型数据集。我正在尝试效仿苹果的例子

\n\n

我有两个问题:

\n\n
    \n
  1. 代码示例中有一条注释:
  2. \n
\n\n
 // taskContext.performAndWait runs on the URLSession\'s delegate queue\n // so it won\xe2\x80\x99t block the main thread.\n
Run Code Online (Sandbox Code Playgroud)\n\n

但就我而言,我没有使用 URLSession 来获取 JSON。该文件与应用程序捆绑在一起。在这种情况下,如何确保导入不会阻塞主线程。我应该创建一个自定义队列吗?有什么例子吗?

\n\n
    \n
  1. 在示例中,它只是导入实体数组。但就我而言,我只需要导入一个具有 70k 个对象且与多个对象相关的实体。

    \n\n

    在此输入图像描述

  2. \n
\n\n

所以我想要实现的是:

\n\n
    \n
  • 如果有,ContactBook请不要导入任何内容,因为我们已经导入了 JSON。
  • \n
  • 如果没有,ContactBook则创建一个并将所有 70kContact对象导入contactsContactBook. 这应该像示例中那样批量发生,并且不应该阻塞 UI。
  • \n
\n\n

我尝试过的:

\n\n
private func insertContactbookIfNeeded() {\n    let fetch: NSFetchRequest<Contactbook> = ContactBook.fetchRequest()\n    let contactBookCount = (try? context.count(for: fetch)) ?? …
Run Code Online (Sandbox Code Playgroud)

import json core-data ios swift

5
推荐指数
0
解决办法
762
查看次数

使用Firebase 3从FIRUser获取创建日期和上次登录日期

我只想获取具有Firebase的用户的创建日期和最后登录日期,我的计划是让用户使用Facebook登录,然后注册并添加新信息,并将用户保存在具有创建日期的实时数据库中,上次登录日期,因此在保存日期后如何使日期与Firebase系统保持不同步,或者我应该只使用这些f FIRUser而不将其保存在实时数据库中

在此处输入图片说明

问题1:如何从FIRUser获取创建和上次登录的日期,如仪表板中所示(请参见下图)

问题2:一旦获得这些日期,我会将其保存在实时数据库中,那么如何使上次登录日期保持同步?

ios firebase swift firebase-authentication firebase-realtime-database

4
推荐指数
2
解决办法
4592
查看次数

在Swift中使用嵌套的reduce

我有一个包含数组的数组Double,如截图中所示:

在此输入图像描述

我的目标是获得Double每个数组元素乘法的总和.这意味着,我想将每个数组的所有元素相乘然后,在我的情况下,我将得到3个值,所以我得到它们的总和.

我想用reduce,flatMap?或任何优雅的解决方案

我试过了什么?

totalCombinations.reduce(0.0) { $0 + ($1[0]*$1[1]*$1[2])  }
Run Code Online (Sandbox Code Playgroud)

但只有当我知道包含双精度的数组的大小时,这才起作用.

arrays reduce functional-programming ios swift

4
推荐指数
1
解决办法
580
查看次数

处理 URLSession 时总是需要 [Weak self] 吗?

我不知道我是否需要[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)

closures ios retain-cycle nsurlsession swift

4
推荐指数
1
解决办法
2014
查看次数

如何比较PHAsset和UIImage

我已将一些转换PHAssetUIImage:

 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是的阵列PHAssetimageUIImage

所以我已经实现了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)

但它不起作用!

objective-c uiimage ios phasset

3
推荐指数
1
解决办法
2140
查看次数