小编Kai*_*ann的帖子

在Swift中实现可用初始化程序的最佳实践

使用以下代码,我尝试定义一个简单的模型类,它是可用的初始化器,它将(json-)字典作为参数.nil如果未在原始json中定义用户名,则应返回初始化程序.

1.为什么代码不能编译?错误消息说:

在从初始化程序返回nil之前,必须初始化类实例的所有存储属性.

这没有意义.我计划返回时为什么要初始化这些属性nil

2.我的方法是正确的,还是会有其他想法或共同模式来实现我的目标?

class User: NSObject {

    let userName: String
    let isSuperUser: Bool = false
    let someDetails: [String]?

    init?(dictionary: NSDictionary) {
        if let value: String = dictionary["user_name"] as? String {
            userName = value
        }
        else {
           return nil
        }

        if let value: Bool = dictionary["super_user"] as? Bool {
            isSuperUser = value
        }

        someDetails = dictionary["some_details"] as? Array

        super.init()
    }
}
Run Code Online (Sandbox Code Playgroud)

object-initializers swift

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

检查颜色相似性的算法

我正在寻找一种比较两种RGB颜色并生成其相似性值的算法(其中相似性意味着"与人类平均感知相似").

有任何想法吗?

编辑:

由于我不能回答,我决定将我的"解决方案"作为问题的编辑.

我决定在我的应用程序中使用(非常)小的真彩色子集,以便我可以自己处理颜色的比较.我使用大约30种颜色,并使用它们之间的硬编码距离.

由于它是一个iPhone应用程序,我使用Objective-C,实现或多或少是一个表示下表的矩阵,它显示了颜色之间的距离.

在此输入图像描述

algorithm rgb comparison colors

77
推荐指数
5
解决办法
3万
查看次数

任何(早期)iOS自动续订订阅体验

苹果昨天终于推出了所谓的汽车可再生订阅.由于我只有很少(仅限沙箱)的应用内购买经验,我不确定我是否在这里完成了.似乎需要服务器端验证收据.似乎找出订阅是否仍然有效的唯一方法是在服务器端存储原始交易数据.关于这个主题的苹果编程指南对我来说都很神秘.

我的期望是,我只能与iOS客户端合作,只需通过商店套件api询问iTunes他/她是否已购买此(订阅)产品并收到是/否答案以及到期日期.

有没有人有自动再生订阅的经验或(因为它们看起来有点相似)非消费品?关于这个有什么好的教程吗?

谢谢.

iphone in-app-purchase ipad ios

28
推荐指数
2
解决办法
1万
查看次数

例外有多贵

你知道java中的异常抛出和处理是多么昂贵吗?

我们在团队中就异常的实际成本进行了多次讨论.有些人认为通过使用例外而导致的性能损失被高估了.

今天我在我们的软件中找到了以下代码:

private void doSomething()
{
    try
    {
      doSomethingElse();
    }
    catch(DidNotWorkException e)
    {
       log("A Message");
    }
    goOn();
}
private void doSomethingElse()
{
   if(isSoAndSo())
   {
      throw new DidNotWorkException();
   }
   goOnAgain();
}
Run Code Online (Sandbox Code Playgroud)

这与此相比如何表现

private void doSomething()
{
    doSomethingElse();
    goOn();
}
private void doSomethingElse()
{
   if(isSoAndSo())
   {
      log("A Message");
      return;
   }
   goOnAgain();
}
Run Code Online (Sandbox Code Playgroud)

我不想讨论代码美学或任何东西,它只是关于运行时行为!你有真实的经验/测量吗?

java performance exception

20
推荐指数
5
解决办法
8865
查看次数

滚动时,大型UICollectionViewCell停止显示

UICollectionView这里描述的相同行为导致了这个问题.即使我决定发布自己的,因为我做了进一步的调查,我不想发表评论或编辑上述问题.

怎么了?:

当正在显示大的细胞在UICollectionViewUICollectionViewFlowLayout,滚动集合视图到一定的偏移后,细胞将消失.

当进一步滚动直到另一个单元格进入可见区域时,消失/隐藏的单元格再次变为可见.

我测试了垂直滚动集合视图和全宽度单元格,但我很确定,它也会发生类似的水平滚动设置.

什么是大细胞?:

所述行为发生在高于显示高度两倍的单元格(960.f + 1.f在3,5英寸显示器上,1136.f + 1.f在4英寸上).

什么确切地发生?:

当滚动的集合视图的偏移超过cell.frame.origin.y + displayHeightOfHardware隐藏属性设置到细胞YES-collectionView:didEndDisplayingCell:forItemAtIndexPath:被调用(例如,第一小区改变为隐藏时scrollingOffset.y达到481.f3,5-英寸iPhone).

如上所述,当滚动,直到下一个单元格映入眼帘,隐藏的电池被再次显示(即隐藏属性的变化NO),此外,滚动足够远的小区时将不会再消失,当它不应该,无论你在哪里滚动到.

使用大于triple-display-height(1441.f/1705.f)的单元格时,这会发生变化.那些表现出相同的行为,但它们保持不变,无论它们上下滚动多远.

还有什么?:

超越-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds返回无法解决这种情况YES.

在隐藏属性NO后,可以通过以编程方式将隐藏属性设置为强制显示单元格(didEndDisplayingCell例如)

那么,问题是什么?:

我很确定,这是一个错误UICollectionView/Controller/Cell/Layout,我将在Apple提交TSI.但与此同时:有没有人对快速黑客解决方案有任何想法

iphone ios uicollectionview

19
推荐指数
1
解决办法
3329
查看次数

我可以使用维基百科的内容吗?

阅读许可证时我总是很困惑....

我想实现(说实话已经完成)一个商业iPad应用程序,它利用维基百科的内容.我被允许

  • 嵌入指向维基百科文章的硬编码链接并在应用程序浏览器中显示这些文章?
  • 实现一个镜像缓存,反映维基百科的一部分,使内容可以脱机使用?
  • 在开发时间手动下载维基百科文章并将内容捆绑在我的应用程序中?

licensing wikipedia

18
推荐指数
2
解决办法
6378
查看次数

如果分发配置文件已过期,如何在App Store中更新我的应用程序?

我想更新App Store中的现有应用程序,但我使用的配置文件已过期(我不确定,如果它与相应的证书有关,也已过期...).自Apple在How-Tos中告诉我:

使用相同的分发配置文件来构建应用程序的每个新版本

我不知道该怎么办.有人可以帮忙吗?

iphone app-store

11
推荐指数
1
解决办法
6616
查看次数

有没有办法在tomcat的web.xml中为所有错误代码配置ONE自定义错误页面的使用?

如标题中所述,我想更改tomcat中的默认错误页面并执行:

<error-page>
  <error-code>500</error-code>
  <location>/error_500.html</location>
</error-page>

 <error-page>
   <error-code>404</error-code>
   <location>/error_404.html</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)

是否可以使用通配符错误代码

<error-page>
  <error-code>*</error-code>
  <location>/error.html</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)

(上面的例子不起作用,但有另一种方法吗?)

谢谢

configuration tomcat

11
推荐指数
1
解决办法
1863
查看次数

swift:在导航栏中设置按钮图像

我正在尝试在控制器的导航栏中设置后退按钮图像,这是我在viewDidLoad()中的代码:

        var backImg: UIImage? = UIImage(named: "back_btn.png")
    println(backImg)
    if var back_img = backImg  {
        println("GET IT")
        println(back_img)
        println(UIControlState.Normal)
        println(UIBarMetrics.Default)
    self.navigationController.navigationBar.backItem.backBarButtonItem.setBackButtonBackgroundImage(back_img, forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default)
    }
Run Code Online (Sandbox Code Playgroud)

我试图把它们放到viewWillLoad,但得到同样的错误

控制台显示错误消息:

<UIImage: 0x7ff37bd85750>
GET IT
<UIImage: 0x7ff37bd85750>
VSC14UIControlState (has 1 child)
(Enum Value)
fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

我不知道哪个部分出了问题.看起来像back_img不是零,但我得到错误说它是零

谢谢!

uinavigationbar uinavigationcontroller uinavigationitem ios swift

9
推荐指数
5
解决办法
3万
查看次数

我可以将 WidgetKit 扩展添加到目标 iOS &lt; 14 的应用程序中吗?

我想向我的 iOS 应用程序添加一个 (WidgetKit-) 小部件。应用程序本身应将目标保持在 < 14。显然,小部件只能在那些 >= 14 的设备上可用,但应用程序也应在所有其他设备上运行。这可能吗?

ios widgetkit swiftui ios14

9
推荐指数
1
解决办法
1107
查看次数