小编And*_*rew的帖子

在Swift中枚举期间从数组中删除?

我想枚举Swift中的数组,并删除某些项目.我想知道这是否安全,如果没有,我应该如何做到这一点.

目前,我会这样做:

for (index, aString: String) in enumerate(array) {
    //Some of the strings...
    array.removeAtIndex(index)
}
Run Code Online (Sandbox Code Playgroud)

arrays enumeration ios swift

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

找出字符串中的字符是否是表情符号?

我需要找出字符串中的字符是否是表情符号.

例如,我有这个角色:

let string = ""
let character = Array(string)[0]
Run Code Online (Sandbox Code Playgroud)

我需要弄清楚那个角色是不是表情符号.

string character ios emoji swift

68
推荐指数
7
解决办法
3万
查看次数

AnyObject to Array?

NSJSONSerialization这样使用:

let twData: AnyObject? = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableLeaves, error: &dataError)
Run Code Online (Sandbox Code Playgroud)

这给了我一个AnyObject?.

从这里,我想将其转换为 Array<Dictionary<String,String>>

我已经尝试了各种各样的,导致这个:

var twDataArray: Array<Dictionary<String,String>>? = twData? as? Array<Dictionary<String,String>>
Run Code Online (Sandbox Code Playgroud)

这只是给出了错误:

类型'Array>'不符合协议'AnyObject'.

并提出更简单的版本:

var twDataArray = twData as Array
Run Code Online (Sandbox Code Playgroud)

给出错误:

无法转换表达式的类型'AnyObject?' 输入'Array'

xcode type-conversion ios swift

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

将单元测试目标添加到xcode - 未能导入桥接头不会消失

我在我的XCode项目中添加了一个新的测试目标.我的项目有Swift代码和Objective-C代码,并有一个桥接头.在将桥接头添加到UnitTesting的构建设置或执行操作时import MyTarget,我收到错误:

failed to import bridging header

我试过了:

  • 将桥接头添加到项目,单元测试和主目标的构建设置.
  • 更改defines modulesYes.
  • 将桥接头文件移动到根文件夹.

我也试过制作一个样本项目,它构建并且运行良好.把我所拥有的一切都带到一个干净的新项目中,这不是一个选择.

xcode unit-testing ios swift

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

为什么我得到"没有将String隐式转换为整数(TypeError)"?

我有一些代码,我在非常类似的情况下运行.这是第一个情况,我有imdb_id一部电影我想要的细节:

url = "http://mymovieapi.com/?id=#{self.imdb_id}&type=json&plot=none&episode=0&lang=en-US&aka=simple&release=simple&business=0&tech=0"
doc = Hpricot(open(url)).to_s
json = JSON.parse(doc)

puts json
puts json["imdb_id"]
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

{"rating_count"=>493949,
"genres"=>["Drama", "Romance"],
"rated"=>"PG-13",
"language"=>["English", "French", "German", "Swedish", "Italian", "Russian"],
"rating"=>7.6,
"country"=>["USA"],
"release_date"=>19980403,
"title"=>"Titanic",
"year"=>1997,
"filming_locations"=>"Santa Clarita, California, USA",
"imdb_id"=>"tt0120338",
"directors"=>["James Cameron"],
"writers"=>["James Cameron"],
"actors"=>["Leonardo DiCaprio", "Kate Winslet", "Billy Zane", "Kathy Bates", "Frances Fisher", "Gloria Stuart", "Bill Paxton", "Bernard Hill", "David Warner", "Victor Garber", "Jonathan Hyde", "Suzy Amis", "Lewis Abernathy", "Nicholas Cascone", "Anatoly M. Sagalevitch"],
"also_known_as"=>["Tai tan ni ke hao"],
"poster"=>{"imdb"=>"http://ia.media-imdb.com/images/M/MV5BMjExNzM0NDM0N15BMl5BanBnXkFtZTcwMzkxOTUwNw@@._V1_SY317_CR0,0,214,317_.jpg", "cover"=>"http://imdb-poster.b0.upaiyun.com/000/120/338.jpg!cover?_upt=66ac07591382594194"},
"runtime"=>["194 …
Run Code Online (Sandbox Code Playgroud)

ruby json

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

Testflight测试人员此时无法安装"无法下载应用程序"

我通过TestFlight分发了我的应用程序版本1.0,构建1,一切都运行良好.

昨天我存档并发送了构建2,现在点击更新按钮,每个用户似乎都收到错误:

无法下载应用程序

此时无法安装[应用程序名称]

我没有收到任何已经安装过build 1的用户的消息,但是看看iTunes Connect,没有用户安装了build 2.

beta xcode itunesconnect ios testflight

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

在多个线程中向Swift阵列添加项目导致问题(因为数组不是线程安全的) - 我该如何解决这个问题?

我想将给定的块添加到数组中,然后在请求时运行数组中包含的所有块.我有类似这样的代码:

class MyArrayBlockClass {
    private var blocksArray: Array<() -> Void> = Array()

    private let blocksQueue: NSOperationQueue()

    func addBlockToArray(block: () -> Void) {
        self.blocksArray.append(block)
    }

    func runBlocksInArray() {
        for block in self.blocksArray {
            let operation = NSBlockOperation(block: block)
            self.blocksQueue.addOperation(operation)
        }

        self.blocksQueue.removeAll(keepCapacity: false)
    }
}
Run Code Online (Sandbox Code Playgroud)

问题在于可以跨多个线程调用addBlockToArray.发生的事情是addBlockToArray在不同的线程中快速连续调用,并且只附加其中一个项目,因此在runBlocksInArray期间不会调用另一个项目.

我尝试过这样的东西,但似乎不起作用:

private let blocksDispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

func addBlockToArray(block: () -> Void) {
    dispatch_async(blocksDispatchQueue) {
        self.blocksArray.append(block)
    }
}
Run Code Online (Sandbox Code Playgroud)

arrays multithreading read-write grand-central-dispatch swift

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

重新加载单元格后向上滚动时,动态单元格高度跳跃的UITableView

我有一个表格视图,每个单元格有可能有自己的高度,因此不适合使用rowHeight.相反,现在我正在使用let indexSet = NSIndexSet(index: 10),而且self.tableView.estimatedRowHeight = 75.这意味着它调用sizeThatFits单元格上的函数,以确定其高度.这一切都运作良好.

问题是当你重新加载屏幕上的单元格时.例如,向下滚动以显示单元格10,然后重新加载单元格10,工作正常.但是当你开始向上滚动,经过你已经看过的单元格时,它会恢复到每个单元格的estimatedRowHeight,完全忽略sizeThatFits,因此在滚动时跳转.我不可能给出一个准确或"足够好"的估计值,因此这种跳跃不会引人注意,因为我的细胞能够显示一行文字或一个完整的图像 - 这是一个很大的区别.尺寸.

我在这里展示了这个效果:

https://vid.me/edgW

我在这方面做了很多不同的尝试,使用了heightForRowAtIndexPath,estimatedHeightForRowAtIndexPath等的混合物.我在StackOverflow上尝试了各种建议.似乎没什么用.

我附上了一个非常简单的示例项目,您可以自己尝试:

https://www.dropbox.com/s/8f1rvkx9k23q6c1/tableviewtest.zip?dl=0

  1. 运行该项目.
  2. 滚动,直到查看单元格10.
  3. 等待最多5秒钟让细胞重新加载(它变成紫色).
  4. 向上滑动.

值得注意的是 - 如果单元格在重新加载时不在视图中,则不会发生这种情况.如果它高于低于当前滚动点,则一切都按预期工作.

objective-c uitableview ios swift

14
推荐指数
3
解决办法
9735
查看次数

UITextField委托跳转到100%的CPU使用率并在使用键盘快捷键时崩溃

所以,我有一个UITextField子类,它是自己的Delegate,并在使用键盘快捷键时崩溃.它最大化CPU并且不会出错.如果不按自己的意图分配Delegate,它的工作没有问题.当按原样分配时Delegate,即使不使用任何(可选)方法,它也会崩溃.

亲自尝试一下:

子类UITextField.

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        self.delegate = self;

    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

它应该崩溃.

编辑 回溯:

* thread #1: tid = 0x3bb8d, 0x39f14726 libobjc.A.dylib`lookUpImpOrNil + 18, queue = 'com.apple.main-thread, stop reason = signal SIGSTOP
    frame #0: 0x39f14726 libobjc.A.dylib`lookUpImpOrNil + 18
    frame #1: 0x39f0dcb6 libobjc.A.dylib`class_respondsToSelector + 34
    frame #2: 0x39f1d05c libobjc.A.dylib`-[NSObject respondsToSelector:] + 32
    frame #3: 0x323b9242 UIKit`-[UITextField respondsToSelector:] + 46
    frame …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uitextfield ios uitextfielddelegate

12
推荐指数
2
解决办法
1828
查看次数

当重新加载具有不断变化的单元格高度的单元格时,UITableView会滚动到顶部

我有一个表视图,它包含一个占位符,当它加载到图像中.加载图像后,我打电话reloadRowsAtIndexPaths:withRowAnimation:.此时,单元格会根据图像的大小更改高度.当发生这种情况时,我希望表视图的内容偏移保持在原位,并且下面的单元格可以进一步向下推,就像您想象的那样.

我得到的效果是滚动视图滚动回到顶部.我不知道为什么会这样,我似乎无法阻止它.把beginUpdates()前和endUpdates()reloadRows线没有任何影响.

我正在使用estimatedRowHeight,因为我的表视图可能有数百行不同的高度.我也在实施tableView:heightForRowAtIndexPath:.

编辑:我已经设置了一个演示项目来测试这个,并且无可否认我无法获得演示项目来重现这种效果.我会继续努力.

objective-c uitableview ios

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