- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个计算属性作为实例变量:
var favorites: [PFObject]
get { return Array(ObjectManager.favorites) }
}
其中 ObjectManager.favorites
是 ObjectManager
类上的 Set
静态变量。以下是我的表格 View 方法:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return favorites.count
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
//delete it from the original set
ObjectManager.removeFavoriteObject(favorites[indexPath.row])
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
println(favorites.count)
// Delete the row from the data source
}
//If there are no longer any fav objects, then there is no need to display the Edit button.
if favorites.isEmpty {
self.navigationItem.rightBarButtonItem = nil
}
}
这会导致当我调用deleteRowsAtIndexPaths
时触发以下异常。
2015-06-08 21:00:35.320 MedConf[56258:707923] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-3347.44/UITableView.m:1623
2015-06-08 21:00:35.396 MedConf[56258:707923] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
*** First throw call stack:
(
0 CoreFoundation 0x00000001114aec65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000110defbb7 objc_exception_throw + 45
2 CoreFoundation 0x00000001114aeaca +[NSException raise:format:arguments:] + 106
3 Foundation 0x0000000110a0498f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
4 UIKit 0x0000000111b30c53 -[UITableView _endCellAnimationsWithContext:] + 12678
5 UIKit 0x0000000121f59f1b -[UITableViewAccessibility deleteRowsAtIndexPaths:withRowAnimation:] + 48
6 MedConf 0x000000010f1cebb3 _TFC7MedConf28FavoritesTableViewController9tableViewfS0_FTCSo11UITableView18commitEditingStyleOSC27UITableViewCellEditingStyle17forRowAtIndexPathCSo11NSIndexPath_T_ + 195
7 MedConf 0x000000010f1ced87 _TToFC7MedConf28FavoritesTableViewController9tableViewfS0_FTCSo11UITableView18commitEditingStyleOSC27UITableViewCellEditingStyle17forRowAtIndexPathCSo11NSIndexPath_T_ + 87
8 UIKit 0x0000000111b56226 -[UITableView animateDeletionOfRowWithCell:] + 132
9 UIKit 0x0000000111b353fd __52-[UITableView _swipeActionButtonsForRowAtIndexPath:]_block_invoke + 72
10 UIKit 0x0000000111a54da2 -[UIApplication sendAction:to:from:forEvent:] + 75
11 UIKit 0x0000000111b6654a -[UIControl _sendActionsForEvents:withEvent:] + 467
12 UIKit 0x0000000111b65919 -[UIControl touchesEnded:withEvent:] + 522
13 UIKit 0x0000000111dffa10 _UIGestureRecognizerUpdate + 9487
14 UIKit 0x0000000111aa1686 -[UIWindow _sendGesturesForEvent:] + 1041
15 UIKit 0x0000000111aa22b2 -[UIWindow sendEvent:] + 666
16 UIKit 0x0000000111a68581 -[UIApplication sendEvent:] + 246
17 UIKit 0x0000000111a75d1c _UIApplicationHandleEventFromQueueEvent + 18265
18 UIKit 0x0000000111a505dc _UIApplicationHandleEventQueue + 2066
19 CoreFoundation 0x00000001113e2431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
20 CoreFoundation 0x00000001113d82fd __CFRunLoopDoSources0 + 269
21 CoreFoundation 0x00000001113d7934 __CFRunLoopRun + 868
22 CoreFoundation 0x00000001113d7366 CFRunLoopRunSpecific + 470
23 GraphicsServices 0x0000000113603a3e GSEventRunModal + 161
24 UIKit 0x0000000111a53900 UIApplicationMain + 1282
25 MedConf 0x000000010f1debf7 main + 135
26 libdyld.dylib 0x0000000113bff145 start + 1
27 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
我不确定异常的原因是什么,因为即使我注释掉从数据源中删除对象的行,它也会被抛出:ObjectManager.removeFavoriteObject(favorites[indexPath.row])
。下面是 removeFavoriteObject
方法。
static func removeFavoriteObject( objectToRemove: PFObject ) {
if contains(favorites, objectToRemove) {
if let favObject = objectToRemove as? Attendee {
favObject.isFavorite = false
} else if let favObject = objectToRemove as? Event {
favObject.isFavorite = false
} else if let favObject = objectToRemove as? Session {
favObject.isFavorite = false
}
}
favorites.remove(objectToRemove)
}
最佳答案
试试这个
static func removeFavoriteObject( objectToRemove: PFObject ) {
if contains(favorites, objectToRemove) {
favorites.remove(objectToRemove)
if let favObject = objectToRemove as? Attendee {
favObject.isFavorite = false
} else if let favObject = objectToRemove as? Event {
favObject.isFavorite = false
} else if let favObject = objectToRemove as? Session {
favObject.isFavorite = false
}
}
}
关于ios - 在 UITableView 中删除一行会导致带有计算属性的 NSInternalInconsistencyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30722894/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!