{ "id": "159190", "key": "TIMOB-23130", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "17706", "name": "Release 5.4.0", "archived": false, "released": true, "releaseDate": "2016-08-11" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-04-01T11:04:28.000+0000", "created": "2016-03-31T19:24:01.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "qe-5.4.0" ], "versions": [], "issuelinks": [ { "id": "51200", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "126436", "key": "ALOY-1355", "fields": { "summary": "Alloy doesn't cast \"true\"/\"false\" attributes as booleans", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2016-06-10T17:58:41.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "On iOS only (didn't test Windows, but Android works) the app will crash if you pass a number to {{TableViewRow.title}}. This is a problem because since ALOY-1355 [Alloy will convert|https://github.com/appcelerator/alloy/pull/756/files#diff-ace298e00a3d12d9898391056d0c0b47R228] a string {{true|false}} to boolean and valid integers and floats to number. So if in XML you have {{}} it will become a number and crash.\r\n\r\nUnless we can resolve ALOY-1355 in a different way (as suggested: only cast if you leave away quotes around the attribute) easily/soon, we should probably just make sure {{TableViewRow.title}} can work with boolean and number values as well.\r\n\r\n*app.js*\r\n\r\n{code:js}\r\nvar win = Ti.UI.createWindow();\r\nwin.add(Ti.UI.createTableView({\r\n top: 20,\r\n data: [{\r\n title: 1 // crashes\r\n // title: true crashes\r\n // title: '1' works\r\n }]\r\n}));\r\nwin.open();\r\n{code}\r\n\r\n*console*\r\n\r\n{code}\r\n[DEBUG] 2016-03-31 21:15:16.508 numtitle[78308:2391163] -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000015\r\n[ERROR] The application has crashed with an uncaught exception 'NSInvalidArgumentException'.\r\n[ERROR] Reason:\r\n[ERROR] -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000015\r\n[ERROR] Stack trace:\r\n[ERROR]\r\n[ERROR] 0 CoreFoundation 0x000000010afbcd6d __exceptionPreprocess + 141\r\n[ERROR] 1 libobjc.A.dylib 0x000000010a98adeb objc_exception_throw + 48\r\n[ERROR] 2 CoreFoundation 0x000000010afc5d3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205\r\n[ERROR] 3 CoreFoundation 0x000000010af0bcfa ___forwarding___ + 970\r\n[ERROR] 4 CoreFoundation 0x000000010af0b8a8 _CF_forwarding_prep_0 + 120\r\n[ERROR] 5 UIKit 0x00000001073f6df1 -[UITableViewLabel setText:] + 119\r\n[ERROR] 6 numtitle 0x00000001051aa45e -[TiUITableViewRowProxy configureTitle:] + 110\r\n[ERROR] 7 numtitle 0x00000001051ad06a -[TiUITableViewRowProxy initializeTableViewCell:] + 122\r\n[ERROR] 8 numtitle 0x00000001050fc062 -[TiUITableView tableView:cellForRowAtIndexPath:] + 482\r\n[ERROR] 9 UIKit 0x00000001070ac4f4 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 766\r\n[ERROR] 10 UIKit 0x00000001070ac62c -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74\r\n[ERROR] 11 UIKit 0x0000000107080d4f -[UITableView _updateVisibleCellsNow:isRecursive:] + 2996\r\n[ERROR] 12 UIKit 0x00000001070b5686 -[UITableView _performWithCachedTraitCollection:] + 92\r\n[ERROR] 13 UIKit 0x000000010709c344 -[UITableView layoutSubviews] + 224\r\n[ERROR] 14 UIKit 0x0000000107009980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703\r\n[ERROR] 15 QuartzCore 0x0000000109a02c00 -[CALayer layoutSublayers] + 146\r\n[ERROR] 16 QuartzCore 0x00000001099f708e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366\r\n[ERROR] 17 QuartzCore 0x00000001099f6f0c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24\r\n[ERROR] 18 QuartzCore 0x00000001099eb3c9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277\r\n[ERROR] 19 QuartzCore 0x0000000109a19086 _ZN2CA11Transaction6commitEv + 486\r\n[ERROR] 20 QuartzCore 0x0000000109a197f8 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92\r\n[ERROR] 21 CoreFoundation 0x000000010aee1c37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23\r\n[ERROR] 22 CoreFoundation 0x000000010aee1ba7 __CFRunLoopDoObservers + 391\r\n[ERROR] 23 CoreFoundation 0x000000010aed77fb __CFRunLoopRun + 1147\r\n[ERROR] 24 CoreFoundation 0x000000010aed70f8 CFRunLoopRunSpecific + 488\r\n[ERROR] 25 GraphicsServices 0x000000010cad1ad2 GSEventRunModal + 161\r\n[ERROR] 26 UIKit 0x0000000106f4ef09 UIApplicationMain + 171\r\n[ERROR] 27 numtitle 0x0000000105053fc6 main + 310\r\n[ERROR] 28 libdyld.dylib 0x000000010c3d592d start + 1\r\n[ERROR]\r\n[ERROR] 2016-03-31 21:15:16.528 numtitle[78308:2391163] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000015'\r\n[ERROR] *** First throw call stack:\r\n[ERROR] (\r\n[ERROR] 0 CoreFoundation 0x000000010afbcd85 __exceptionPreprocess + 165\r\n[ERROR] 1 libobjc.A.dylib 0x000000010a98adeb objc_exception_throw + 48\r\n[ERROR] 2 CoreFoundation 0x000000010afc5d3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205\r\n[ERROR] 3 CoreFoundation 0x000000010af0bcfa ___forwarding___ + 970\r\n[ERROR] 4 CoreFoundation 0x000000010af0b8a8 _CF_forwarding_prep_0 + 120\r\n[ERROR] 5 UIKit 0x00000001073f6df1 -[UITableViewLabel setText:] + 119\r\n[ERROR] 6 numtitle 0x00000001051aa45e -[TiUITableViewRowProxy configureTitle:] + 110\r\n[ERROR] 7 numtitle 0x00000001051ad06a -[TiUITableViewRowProxy initializeTableViewCell:] + 122\r\n[ERROR] 8 numtitle 0x00000001050fc062 -[TiUITableView tableView:cellForRowAtIndexPath:] + 482\r\n[ERROR] 9 UIKit 0x00000001070ac4f4 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 766\r\n[ERROR] 10 UIKit 0x00000001070ac62c -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74\r\n[ERROR] 11 UIKit 0x0000000107080d4f -[UITableView _updateVisibleCellsNow:isRecursive:] + 2996\r\n[ERROR] 12 UIKit 0x00000001070b5686 -[UITableView _performWithCachedTraitCollection:] + 92\r\n[ERROR] 13 UIKit 0x000000010709c344 -[UITableView layoutSubviews] + 224\r\n[ERROR] 14 UIKit 0x0000000107009980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703\r\n[ERROR] 15 QuartzCore 0x0000000109a02c00 -[CALayer layoutSublayers] + 146\r\n[ERROR] 16 QuartzCore 0x00000001099f708e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366\r\n[ERROR] 17 QuartzCore 0x00000001099f6f0c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24\r\n[ERROR] 18 QuartzCore 0x00000001099eb3c9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277\r\n[ERROR] 19 QuartzCore 0x0000000109a19086 _ZN2CA11Transaction6commitEv + 486\r\n[ERROR] 20 QuartzCore 0x0000000109a197f8 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92\r\n[ERROR] 21 CoreFoundation 0x000000010aee1c37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23\r\n[ERROR] 22 CoreFoundation 0x000000010aee1ba7 __CFRunLoopDoObservers + 391\r\n[ERROR] 23 CoreFoundation 0x000000010aed77fb __CFRunLoopRun + 1147\r\n[ERROR] 24 CoreFoundation 0x000000010aed70f8 CFRunLoopRunSpecific + 488\r\n[ERROR] 25 GraphicsServices 0x000000010cad1ad2 GSEventRunModal + 161\r\n[ERROR] 26 UIKit 0x0000000106f4ef09 UIApplicationMain + 171\r\n[ERROR] 27 numtitle 0x0000000105053fc6 main + 310\r\n[ERROR] 28 libdyld.dylib 0x000000010c3d592d start + 1\r\n[ERROR] )\r\n[ERROR] libc++abi.dylib: terminating with uncaught exception of type NSException\r\n[TRACE] [numtitle] -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000015\r\n[TRACE] [numtitle] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000015'\r\n{code}", "attachment": [], "flagged": false, "summary": "iOS: TableViewRow.title crashes app if it is not set to a string", "creator": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "subtasks": [], "reporter": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "environment": null, "closedSprints": [ { "id": 614, "state": "closed", "name": "2016 Sprint 07 SDK", "startDate": "2016-03-26T00:38:56.432Z", "endDate": "2016-04-09T00:38:00.000Z", "completeDate": "2016-04-11T04:41:08.231Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "381214", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "/cc [~cbarber] since you implemented ALOY-1355", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-31T19:26:04.000+0000", "updated": "2016-03-31T19:26:04.000+0000" }, { "id": "381215", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Ah, our first edge case.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-31T19:36:20.000+0000", "updated": "2016-03-31T19:36:20.000+0000" }, { "id": "381237", "author": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR pending : https://github.com/appcelerator/titanium_mobile/pull/7902 ", "updateAuthor": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-31T21:28:23.000+0000", "updated": "2016-03-31T21:28:23.000+0000" }, { "id": "382429", "author": { "name": "bearus", "key": "bearus", "displayName": "Be Rushton", "active": true, "timeZone": "Australia/Brisbane" }, "body": "This also happens on PickerRow's", "updateAuthor": { "name": "bearus", "key": "bearus", "displayName": "Be Rushton", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-04-12T06:11:23.000+0000", "updated": "2016-04-12T06:11:23.000+0000" }, { "id": "382432", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~bearus] Can you create a separate ticket for that issue please?", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-04-12T06:22:05.000+0000", "updated": "2016-04-12T06:22:05.000+0000" }, { "id": "382496", "author": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-04-12T16:52:39.000+0000", "updated": "2016-04-12T16:52:39.000+0000" }, { "id": "382565", "author": { "name": "bearus", "key": "bearus", "displayName": "Be Rushton", "active": true, "timeZone": "Australia/Brisbane" }, "body": "I'll workaround it until 5.4 is released. Thanks.", "updateAuthor": { "name": "bearus", "key": "bearus", "displayName": "Be Rushton", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-04-13T06:04:40.000+0000", "updated": "2016-04-13T06:04:40.000+0000" }, { "id": "388074", "author": { "name": "jlongton", "key": "jlongton", "displayName": "Josh Longton", "active": true, "timeZone": "Europe/London" }, "body": "Verified as fixed.\r\n
Tested on:
\r\niPhone 6s Plus (9.3.1)\r\niOS Simulator (9.3)\r\n
Mac OSX El Capitan 10.11.4\r\nStudio: 4.7.0.201606070951
\r\nTi SDK: 5.4.0.v20160608165242
\r\nAppc NPM: 4.2.7-2\r\nAppc CLI: 5.4.0-13\r\n
Xcode 7.3\r\nNode v0.12.7
\r\n*Closing Ticket.*", "updateAuthor": { "name": "jlongton", "key": "jlongton", "displayName": "Josh Longton", "active": true, "timeZone": "Europe/London" }, "created": "2016-06-10T17:57:57.000+0000", "updated": "2016-06-10T17:58:08.000+0000" } ], "maxResults": 10, "total": 10, "startAt": 0 } } }