Related
My app were rejected by the apple review team and shared a crashlog file but i am not able to find the reason of the crash in crashlog file. Can anyone tell me that how we can find the reason of the crash in crash log file?
`
{"app_name":"Foo","timestamp":"2022-09-08 10:46:03.00 +0100","app_version":"55","slice_uuid":"529efaf0-1464-38b2-8c41-3a0edadca233","adam_id":"1496108936","build_version":"1","platform":2,"bundleID":"com.foo.foo","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"iPhone OS 15.6.1 (19G82)","incident_id":"5E8B06A8-EE24-4CDC-BD48-CAB02AEA6615","name":"foo"}
{
"uptime" : 920000,
"procLaunch" : "2022-09-08 10:46:02.5975 +0100",
"procRole" : "Foreground",
"version" : 2,
"userID" : 501,
"deployVersion" : 210,
"modelCode" : "iPad11,3",
"procStartAbsTime" : 22247974353105,
"coalitionID" : 3668,
"osVersion" : {
"isEmbedded" : true,
"train" : "iPhone OS 15.6.1",
"releaseType" : "User",
"build" : "19G82"
},
"captureTime" : "2022-09-08 10:46:03.6753 +0100",
"incident" : "5E8B06A8-EE24-4CDC-BD48-CAB02AEA6615",
"bug_type" : "309",
"pid" : 6341,
"procExitAbsTime" : 22248000054890,
"cpuType" : "ARM-64",
"procName" : "foo",
"procPath" : "\/private\/var\/containers\/Bundle\/Application\/EDF1F543-13EB-453E-AD4A-2FFEA481B288\/foo.app\/foo",
"bundleInfo" : {"CFBundleShortVersionString":"55","CFBundleVersion":"1","CFBundleIdentifier":"com.foo.foo","DTAppStoreToolsBuild":"13F100"},
"storeInfo" : {"itemID":"1496108936","deviceIdentifierForVendor":"B73C62DC-81DF-4552-99BB-FDBCE5E72BDD","thirdParty":true,"softwareVersionExternalIdentifier":"852078451"},
"parentProc" : "launchd",
"parentPid" : 1,
"coalitionName" : "com.foo.foo",
"crashReporterKey" : "24de9edc0e63b08e2d17af0670774d643c794ca5",
"isCorpse" : 1,
"exception" : {"codes":"0x0000000000000001, 0x0000000102e2bbf4","rawCodes":[1,4343380980],"type":"EXC_BREAKPOINT","signal":"SIGTRAP"},
"termination" : {"flags":0,"code":5,"namespace":"SIGNAL","indicator":"Trace\/BPT trap: 5","byProc":"exc handler","byPid":6341},
"faultingThread" : 0,
"threads" : [{"triggered":true,"id":4696497,"threadState":{"x":[{"value":6124189864},{"value":32},{"value":7},{"value":1},{"value":4294967294},{"value":1},{"value":1},{"value":0},{"value":4294967301},{"value":2147483649},{"value":4294967301},{"value":4294967299},{"value":6124189872},{"value":2835368086},{"value":2837467136},{"value":10},{"value":11002588268},{"value":689963008},{"value":0},{"value":6530925228,"symbolLocation":0,"symbol":"swift::metadataimpl::FixedSizeBufferValueWitnesses<swift::metadataimpl::ValueWitnesses<swift::metadataimpl::NativeBox<unsigned long long, 8ul, 8ul, 8ul> >, true, 8ul, 8ul, false>::getEnumTagSinglePayload(swift::OpaqueValue const*, unsigned int, swift::TargetMetadata<swift::InProcess> const*)"},{"value":6124189424},{"value":7961257712,"symbolLocation":0,"symbol":"type metadata for Date"},{"value":7961344592,"symbolLocation":0,"symbol":"value witness table for Builtin.Int64"},{"value":4749843968},{"value":10737611088},{"value":6124189456},{"value":7961182112,"symbolLocation":0,"symbol":"type metadata for IndexPath"},{"value":6124189440},{"value":6124189408}],"flavor":"ARM_THREAD_STATE64","lr":{"value":16168593918452218868},"cpsr":{"value":0},"fp":{"value":6124190000},"sp":{"value":6124188816},"esr":{"value":4060086273,"description":"(Breakpoint) brk 1"},"pc":{"value":4343380980,"matchesCrashFrame":1},"far":{"value":4352726936}},"queue":"com.apple.main-thread","frames":[{"imageOffset":703476,"imageIndex":0},{"imageOffset":703476,"imageIndex":0},{"imageOffset":683444,"imageIndex":0},{"imageOffset":2648516,"symbol":"-[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:]","symbolLocation":1532,"imageIndex":1},{"imageOffset":4735024,"symbol":"-[UITableView _updateVisibleCellsForRanges:createIfNecessary:]","symbolLocation":732,"imageIndex":1},{"imageOffset":2800572,"symbol":"-[UITableView _updateVisibleCellsNow:]","symbolLocation":1432,"imageIndex":1},{"imageOffset":1556184,"symbol":"-[UITableView layoutSubviews]","symbolLocation":456,"imageIndex":1},{"imageOffset":1622396,"symbol":"-[UIView(CALayerDelegate) layoutSublayersOfLayer:]","symbolLocation":2592,"imageIndex":1},{"imageOffset":264188,"symbol":"CA::Layer::layout_if_needed(CA::Transaction*)","symbolLocation":532,"imageIndex":2},{"imageOffset":207968,"symbol":"CA::Layer::layout_and_display_if_needed(CA::Transaction*)","symbolLocation":136,"imageIndex":2},{"imageOffset":292276,"symbol":"CA::Context::commit_transaction(CA::Transaction*, double, double*)","symbolLocation":452,"imageIndex":2},{"imageOffset":328872,"symbol":"CA::Transaction::commit()","symbolLocation":704,"imageIndex":2},{"imageOffset":205728,"symbol":"CA::Transaction::flush_as_runloop_observer(bool)","symbolLocation":88,"imageIndex":2},{"imageOffset":266436,"symbol":"__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__","symbolLocation":36,"imageIndex":3},{"imageOffset":65664,"symbol":"__CFRunLoopDoObservers","symbolLocation":592,"imageIndex":3},{"imageOffset":45372,"symbol":"__CFRunLoopRun","symbolLocation":1052,"imageIndex":3},{"imageOffset":125896,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":3},{"imageOffset":4980,"symbol":"GSEventRunModal","symbolLocation":164,"imageIndex":4},{"imageOffset":5327704,"symbol":"-[UIApplication _run]","symbolLocation":1100,"imageIndex":1},{"imageOffset":2711696,"symbol":"UIApplicationMain","symbolLocation":364,"imageIndex":1},{"imageOffset":24976,"imageIndex":0},{"imageOffset":105892,"symbol":"start","symbolLocation":520,"imageIndex":5}]},{"id":4696501,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696502,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696503,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696504,"name":"com.apple.uikit.eventfetch-thread","frames":[{"imageOffset":5280,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":6884,"symbol":"mach_msg","symbolLocation":76,"imageIndex":7},{"imageOffset":27952,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":3},{"imageOffset":45500,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":3},{"imageOffset":125896,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":3},{"imageOffset":103492,"symbol":"-[NSRunLoop(NSRunLoop) runMode:beforeDate:]","symbolLocation":236,"imageIndex":8},{"imageOffset":372236,"symbol":"-[NSRunLoop(NSRunLoop) runUntilDate:]","symbolLocation":92,"imageIndex":8},{"imageOffset":4779204,"symbol":"-[UIEventFetcher threadMain]","symbolLocation":524,"imageIndex":1},{"imageOffset":431132,"symbol":"__NSThread__start__","symbolLocation":808,"imageIndex":8},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":4696505,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696506,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696507,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696511,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696512,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696513,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696514,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":4696516,"name":"com.apple.NSURLConnectionLoader","frames":[{"imageOffset":5280,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":6884,"symbol":"mach_msg","symbolLocation":76,"imageIndex":7},{"imageOffset":27952,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":3},{"imageOffset":45500,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":3},{"imageOffset":125896,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":3},{"imageOffset":2589148,"imageIndex":9},{"imageOffset":431132,"symbol":"__NSThread__start__","symbolLocation":808,"imageIndex":8},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":4696517,"name":"com.apple.CoreMotion.MotionThread","frames":[{"imageOffset":5280,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":6884,"symbol":"mach_msg","symbolLocation":76,"imageIndex":7},{"imageOffset":27952,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":3},{"imageOffset":45500,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":3},{"imageOffset":125896,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":3},{"imageOffset":654760,"symbol":"CFRunLoopRun","symbolLocation":64,"imageIndex":3},{"imageOffset":76444,"imageIndex":10},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":4696518,"name":"AVAudioSession Notify Thread","frames":[{"imageOffset":5280,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":6884,"symbol":"mach_msg","symbolLocation":76,"imageIndex":7},{"imageOffset":27952,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":3},{"imageOffset":45500,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":3},{"imageOffset":125896,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":3},{"imageOffset":28420,"symbol":"CADeprecated::GenericRunLoopThread::Entry(void*)","symbolLocation":164,"imageIndex":11},{"imageOffset":67824,"symbol":"CADeprecated::CAPThread::Entry(CADeprecated::CAPThread*)","symbolLocation":92,"imageIndex":11},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":4696519,"name":"JavaScriptCore libpas scavenger","frames":[{"imageOffset":7972,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":33432,"symbol":"_pthread_cond_wait","symbolLocation":1236,"imageIndex":6},{"imageOffset":962888,"symbol":"scavenger_thread_main","symbolLocation":1232,"imageIndex":12},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]}],
"usedImages" : [
{
"source" : "P",
"arch" : "arm64",
"base" : 4342677504,
"size" : 4833280,
"uuid" : "529efaf0-1464-38b2-8c41-3a0edadca233",
"path" : "\/private\/var\/containers\/Bundle\/Application\/EDF1F543-13EB-453E-AD4A-2FFEA481B288\/foo.app\/foo",
"name" : "foo"
}
]
}
`
Trying to find the reason of crash in the crash log file.
I am using \bibliographystyle{unsrt} and have some issues after printing the references.
Firstly, some of the links go outside the defined range:
Here is how the entry from the .bib file looks like:
#misc{noauthor_representational_2021,
title = {Representational {State} {Transfer}. {Verfügbar} von: https://de.wikipedia.org/wiki/{Representational}\_State\_Transfer\#{Einheitliche}\_Schnittstelle. {Abruf} 01/08/2021},
copyright = {Creative Commons Attribution-ShareAlike License},
url = {https://de.wikipedia.org/w/index.php?title=Representational_State_Transfer&oldid=214173929},
abstract = {Representational State Transfer (abgekürzt REST) ist ein Paradigma für die Softwarearchitektur von verteilten Systemen, insbesondere für Webservices. REST ist eine Abstraktion der Struktur und des Verhaltens des World Wide Web. REST hat das Ziel, einen Architekturstil zu schaffen, der den Anforderungen des modernen Web besser genügt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle (siehe Abschnitt Prinzipien) von anderen Architekturstilen.
Der Zweck von REST liegt schwerpunktmäßig auf der Maschine-zu-Maschine-Kommunikation. REST stellt eine einfache Alternative zu ähnlichen Verfahren wie SOAP und WSDL und dem verwandten Verfahren RPC dar. Anders als bei vielen verwandten Architekturen kodiert REST keine Methodeninformation in den URI, da der URI Ort und Namen der Ressource angibt, nicht aber die Funktionalität, die der Web-Dienst zu der Ressource anbietet. Der Vorteil von REST liegt darin, dass im WWW bereits ein Großteil der für REST nötigen Infrastruktur (z. B. Web- und Application-Server, HTTP-fähige Clients, HTML- und XML-Parser, Sicherheitsmechanismen) vorhanden ist, und viele Web-Dienste per se REST-konform sind. Eine Ressource kann dabei über verschiedene Medientypen dargestellt werden, auch Repräsentation der Ressource genannt.
So ist ein Online-Dienst, der lediglich unveränderte Seiteninhalte nach dem Internetstandard HTTP anbietet, bereits REST-konform. Dynamisch erzeugte Seiten folgen diesem Paradigma jedoch oft nicht. So bieten beispielsweise Nachrichtenseiten sich ständig ändernde Informationen mit sowohl unterschiedlichem Format als auch Inhalt an, die nur schwer automatisch verarbeitet werden können. Bliebe das Format unverändert, so wäre eine wichtige REST-Eigenschaft erfüllt. So wäre eine Webseite, auf der ständig die aktuelle Uhrzeit in immer demselben Format abrufbar ist, REST-konform.
Die Bezeichnung „Representational State Transfer“ soll den Übergang vom aktuellen Zustand zum nächsten Zustand (state) einer Applikation verbildlichen. Dieser Zustandsübergang erfolgt durch den Transfer der Daten, die den nächsten Zustand repräsentieren.},
language = {de},
urldate = {2021-08-01},
journal = {Wikipedia},
month = jul,
year = {2021},
note = {Page Version ID: 214173929},
file = {Snapshot:/Users/username/Zotero/storage/2D7HXXHG/index.html:text/html},
}
I have a couple of links like this within the references and I am not sure how I can fix them. I tried a couple of things like \sloppy, \setlength{\emergencystretch}{8em}, etc., but didnt seem to fix the issue. Also my links are defined within the title of the reference, would it be possible to make them work when they are on more than one line? Currently they are all clickable, but in most cases the link is broken.
Instead of manually trying to escape all the special characters in your urls, use the \url{..} macro to typeset them. You can get it by e.g. loading the url or hyperref package.
\documentclass{article}
\usepackage{hyperref}
\begin{filecontents*}[overwrite]{\jobname.bib}
#misc{noauthor_representational_2021,
title = {Representational {State} {Transfer}. {Verfügbar} von: \url{https://de.wikipedia.org/wiki/Representational_State_Transfer#Einheitliche_Schnittstelle}. {Abruf} 01/08/2021},
copyright = {Creative Commons Attribution-ShareAlike License},
url = {https://de.wikipedia.org/w/index.php?title=Representational_State_Transfer&oldid=214173929},
abstract = {Representational State Transfer (abgekürzt REST) ist ein Paradigma für die Softwarearchitektur von verteilten Systemen, insbesondere für Webservices. REST ist eine Abstraktion der Struktur und des Verhaltens des World Wide Web. REST hat das Ziel, einen Architekturstil zu schaffen, der den Anforderungen des modernen Web besser genügt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle (siehe Abschnitt Prinzipien) von anderen Architekturstilen.
Der Zweck von REST liegt schwerpunktmäßig auf der Maschine-zu-Maschine-Kommunikation. REST stellt eine einfache Alternative zu ähnlichen Verfahren wie SOAP und WSDL und dem verwandten Verfahren RPC dar. Anders als bei vielen verwandten Architekturen kodiert REST keine Methodeninformation in den URI, da der URI Ort und Namen der Ressource angibt, nicht aber die Funktionalität, die der Web-Dienst zu der Ressource anbietet. Der Vorteil von REST liegt darin, dass im WWW bereits ein Großteil der für REST nötigen Infrastruktur (z. B. Web- und Application-Server, HTTP-fähige Clients, HTML- und XML-Parser, Sicherheitsmechanismen) vorhanden ist, und viele Web-Dienste per se REST-konform sind. Eine Ressource kann dabei über verschiedene Medientypen dargestellt werden, auch Repräsentation der Ressource genannt.
So ist ein Online-Dienst, der lediglich unveränderte Seiteninhalte nach dem Internetstandard HTTP anbietet, bereits REST-konform. Dynamisch erzeugte Seiten folgen diesem Paradigma jedoch oft nicht. So bieten beispielsweise Nachrichtenseiten sich ständig ändernde Informationen mit sowohl unterschiedlichem Format als auch Inhalt an, die nur schwer automatisch verarbeitet werden können. Bliebe das Format unverändert, so wäre eine wichtige REST-Eigenschaft erfüllt. So wäre eine Webseite, auf der ständig die aktuelle Uhrzeit in immer demselben Format abrufbar ist, REST-konform.
Die Bezeichnung „Representational State Transfer“ soll den Übergang vom aktuellen Zustand zum nächsten Zustand (state) einer Applikation verbildlichen. Dieser Zustandsübergang erfolgt durch den Transfer der Daten, die den nächsten Zustand repräsentieren.},
language = {de},
urldate = {2021-08-01},
journal = {Wikipedia},
month = jul,
year = {2021},
note = {Page Version ID: 214173929},
file = {Snapshot:/Users/username/Zotero/storage/2D7HXXHG/index.html:text/html},
}
\end{filecontents*}
\begin{document}
\cite{*}
\bibliographystyle{unsrt}
\bibliography{\jobname}
\end{document}
I'm trying to import this XML
https://wmts.geo.admin.ch/EPSG/2056/1.0.0/WMTSCapabilities.xml
into google spreadsheets using the IMPORTXML function . using XPATH I would like
to extract from
...
<Layer>
<ows:Title>Städte und Agglomerationen BeSA</ows:Title>
<ows:Abstract>Die Liste der Beitragsberechtigten Städte und Agglomerationen bildet ab, welche Gemeinden im Rahmen des Programms Agglomerationsverkehr für Beiträge des Bundes beitragsberechtigt sind (gemäss Anhang 4 der Verordnung über die Verwendung der zweckgebundenen Mineralölsteuer und weiterer für den Strassenverkehr zweckgebundener Mittel ([MinVV]). Die Grundlage für die Liste bildet die Definition des «Raums mit städtischem Charakter» des Bundesamts für Statistik BFS (2012). Dabei wurde die Beitragsberechtigung für alle Gemeinden erhalten, die aufgrund der Agglomerationsdefinition von 2000 beitragsberechtigt waren. Die Anzahl Gürtelgemeinden wurde gegenüber der Definition des BFS von 2012 durch die Anwendung statistischer Kriterien reduziert. Überdies wurden die Gemeinden Sarnen und Appenzell als Kantonshauptorte in die Liste der Beitragsberechtigten Städte und Agglomerationen aufgenommen. Mit Arrondierungen und Lückenfüllungen wurden noch kleine Bereinigungen durchgeführt.</ows:Abstract>
<ows:WGS84BoundingBox>
<ows:LowerCorner>5.140242 45.398181</ows:LowerCorner>
<ows:UpperCorner>11.47757 48.230651</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>ch.are.agglomerationsverkehr</ows:Identifier>
<ows:Metadata xlink:href="https://www.geocat.ch/geonetwork/srv/ger/md.viewer#/full_view/f4b72bb8-aff0-4eab-b1e8-48e698c0e8fb"/>
<Style>
<ows:Title>Städte und Agglomerationen BeSA</ows:Title>
<ows:Identifier>ch.are.agglomerationsverkehr</ows:Identifier>
<LegendURL format="image/png" xlink:href="https://api3.geo.admin.ch/static/images/legends/ch.are.agglomerationsverkehr_de.png"/>
</Style>
<Format>image/png</Format>
<Dimension>
<ows:Identifier>Time</ows:Identifier>
<Default>current</Default>
<Value>current</Value>
</Dimension>
<TileMatrixSetLink>
<TileMatrixSet>2056_25</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/png" resourceType="tile" template="https://wmts.geo.admin.ch/1.0.0/ch.are.agglomerationsverkehr/default/{Time}/2056/{TileMatrix}/{TileCol}/{TileRow}.png"/>
</Layer>
...
I would like to filter all
<ows:Identifier>
whcih follow after <ows:Title>
eg
ows:Identifierch.are.agglomerationsverkehr</ows:Identifier>
from the document
Was not successfull at all with any tries like
//Contents/Layer/ows:WGS84BoundingBox/ows:Identifier
any clues?
You're running into a namespace problem, and it's not clear to me whether IMPORTXML gives you a way to register namespaces. If not, a workaround is necessary:
//*[local-name() = 'Contents']/*[local-name() = 'Layer']/*[local-name() = 'Identifier']
I got a crash log like this:
{"timestamp":"2017-01-05 22:29:03.03 +0800","bug_type":"298","os_version":"iPhone OS 9.3.2 (13F69)"}
{
"crashReporterKey" : "6e088e6d206ce6025a40eacd5ea68779dc5ac344",
"kernel" : "Darwin Kernel Version 15.5.0: Mon Apr 18 16:44:06 PDT 2016; root:xnu-3248.50.21~4\/RELEASE_ARM64_T7000",
"product" : "iPhone7,2",
"incident" : "C106CE8A-F492-47FF-BEA9-293E6ACFE201",
"date" : "2017-01-05 22:29:03.03 +0800",
"build" : "iPhone OS 9.3.2 (13F69)",
"timeDelta" : 3377,
"memoryStatus" : {
"compressorSize" : 30099,
"pageSize" : 4096,
"compressions" : 719018,
"memoryPages" : {
"active" : 33364,
"throttled" : 0,
"fileBacked" : 24001,
"wired" : 169666,
"anonymous" : 27027,
"purgeable" : 6,
"inactive" : 15716,
"free" : 2836,
"speculative" : 1948
},
"uncompressed" : 81552,
"decompressions" : 333878
},
"largestProcess" : "MYAPP",
"processes" : [
{
"rpages" : 556,
"states" : [
"daemon",
"idle"
],
"name" : "assetsd",
"pid" : 839,
"reason" : "vm-pageshortage",
"fds" : 50,
"uuid" : "MYUUID",
"purgeable" : 0,
"cpuTime" : 0.373819,
"lifetimeMax" : 970
},
{
"rpages" : 231,
"states" : [
"daemon",
"idle"
],
"name" : "followupd",
"pid" : 851,
"reason" : "vm-pageshortage",
"fds" : 50,
"uuid" : "MYUUID",
"purgeable" : 0,
"cpuTime" : 0.04115,
"lifetimeMax" : 487
},
and a lot more...
There is no need to symbolize it since there is no call stack shown.
And I was just running my app to play video for like one hour, then this crash came out.
It is not every time but quite often.
How should I read such kind of log?
Can anyone explain me which of all the keys are important and what they mean in the big json?
#dstudeba is right, when you playing the video your CPU memory consumption is more then it is expected. Sometimes it is happened
when there is bulk of data coming from the server.
when you does not managed the memory in your app.
For more details : Analyzing Crash Reports and MemoryMgmt
Your App crashed because it ran out of memory. I don't know what your app does, but it either has a memory leak or is not monitoring/releasing memory properly.
Under reason it says [vm-pageshortage] according to the Apple documentation it is "The process was killed due to memory pressure."
You can read Apple's documentation on crash reports here: https://developer.apple.com/library/content/technotes/tn2151/_index.html
Using Swift i would like to sort the below array using the country name [0][1] instead of country code. Not sure how to achieve this.
let prefixCodes = [["AD", "Andorra"], ["AE", "United Arab Emirates"], ["AF", "Afghanistan"], ["AG", "Antigua & Barbuda"], ["AI", "Anguilla"], ["AL", "Albania"], ["AM", "Armenia"], ["AO", "Angola"], ["AQ", "Antarctica"], ["AR", "Argentina"], ["AS", "American Samoa"], ["AT", "Austria"], ["AU", "Australia"], ["AW", "Aruba"], ["AX", "Åland Islands"], ["AZ", "Azerbaijan"], ["BA", "Bosnia & Herzegovina"], ["BB", "Barbados"], ["BD", "Bangladesh"], ["BE", "Belgium"], ["BF", "Burkina Faso"], ["BG", "Bulgaria"], ["BH", "Bahrain"], ["BI", "Burundi"], ["BJ", "Benin"], ["BL", "St. Barthélemy"], ["BM", "Bermuda"], ["BN", "Brunei"], ["BO", "Bolivia"], ["BQ", "Caribbean Netherlands"], ["BR", "Brazil"], ["BS", "Bahamas"], ["BT", "Bhutan"], ["BV", "Bouvet Island"], ["BW", "Botswana"], ["BY", "Belarus"], ["BZ", "Belize"], ["CA", "Canada"], ["CC", "Cocos (Keeling) Islands"], ["CD", "Congo - Kinshasa"], ["CF", "Central African Republic"], ["CG", "Congo - Brazzaville"], ["CH", "Switzerland"], ["CI", "Côte d’Ivoire"], ["CK", "Cook Islands"], ["CL", "Chile"], ["CM", "Cameroon"], ["CN", "China"], ["CO", "Colombia"], ["CR", "Costa Rica"], ["CU", "Cuba"], ["CV", "Cape Verde"], ["CW", "Curaçao"], ["CX", "Christmas Island"], ["CY", "Cyprus"], ["CZ", "Czech Republic"], ["DE", "Germany"], ["DJ", "Djibouti"], ["DK", "Denmark"], ["DM", "Dominica"], ["DO", "Dominican Republic"], ["DZ", "Algeria"], ["EC", "Ecuador"], ["EE", "Estonia"], ["EG", "Egypt"], ["EH", "Western Sahara"], ["ER", "Eritrea"], ["ES", "Spain"], ["ET", "Ethiopia"], ["FI", "Finland"], ["FJ", "Fiji"], ["FK", "Falkland Islands"], ["FM", "Micronesia"], ["FO", "Faroe Islands"], ["FR", "France"], ["GA", "Gabon"], ["GB", "United Kingdom"], ["GD", "Grenada"], ["GE", "Georgia"], ["GF", "French Guiana"], ["GG", "Guernsey"], ["GH", "Ghana"], ["GI", "Gibraltar"], ["GL", "Greenland"], ["GM", "Gambia"], ["GN", "Guinea"], ["GP", "Guadeloupe"], ["GQ", "Equatorial Guinea"], ["GR", "Greece"], ["GS", "So. Georgia & So. Sandwich Isl."], ["GT", "Guatemala"], ["GU", "Guam"], ["GW", "Guinea-Bissau"], ["GY", "Guyana"], ["HK", "Hong Kong SAR China"], ["HM", "Heard & McDonald Islands"], ["HN", "Honduras"], ["HR", "Croatia"], ["HT", "Haiti"], ["HU", "Hungary"], ["ID", "Indonesia"], ["IE", "Ireland"], ["IL", "Israel"], ["IM", "Isle of Man"], ["IN", "India"], ["IO", "British Indian Ocean Territory"], ["IQ", "Iraq"], ["IR", "Iran"], ["IS", "Iceland"], ["IT", "Italy"], ["JE", "Jersey"], ["JM", "Jamaica"], ["JO", "Jordan"], ["JP", "Japan"], ["KE", "Kenya"], ["KG", "Kyrgyzstan"], ["KH", "Cambodia"], ["KI", "Kiribati"], ["KM", "Comoros"], ["KN", "St. Kitts & Nevis"], ["KP", "North Korea"], ["KR", "South Korea"], ["KW", "Kuwait"], ["KY", "Cayman Islands"], ["KZ", "Kazakhstan"], ["LA", "Laos"], ["LB", "Lebanon"], ["LC", "St. Lucia"], ["LI", "Liechtenstein"], ["LK", "Sri Lanka"], ["LR", "Liberia"], ["LS", "Lesotho"], ["LT", "Lithuania"], ["LU", "Luxembourg"], ["LV", "Latvia"], ["LY", "Libya"], ["MA", "Morocco"], ["MC", "Monaco"], ["MD", "Moldova"], ["ME", "Montenegro"], ["MF", "St. Martin"], ["MG", "Madagascar"], ["MH", "Marshall Islands"], ["MK", "Macedonia"], ["ML", "Mali"], ["MM", "Myanmar (Burma)"], ["MN", "Mongolia"], ["MO", "Macau SAR China"], ["MP", "Northern Mariana Islands"], ["MQ", "Martinique"], ["MR", "Mauritania"], ["MS", "Montserrat"], ["MT", "Malta"], ["MU", "Mauritius"], ["MV", "Maldives"], ["MW", "Malawi"], ["MX", "Mexico"], ["MY", "Malaysia"], ["MZ", "Mozambique"], ["NA", "Namibia"], ["NC", "New Caledonia"], ["NE", "Niger"], ["NF", "Norfolk Island"], ["NG", "Nigeria"], ["NI", "Nicaragua"], ["NL", "Netherlands"], ["NO", "Norway"], ["NP", "Nepal"], ["NR", "Nauru"], ["NU", "Niue"], ["NZ", "New Zealand"], ["OM", "Oman"], ["PA", "Panama"], ["PE", "Peru"], ["PF", "French Polynesia"], ["PG", "Papua New Guinea"], ["PH", "Philippines"], ["PK", "Pakistan"], ["PL", "Poland"], ["PM", "St. Pierre & Miquelon"], ["PN", "Pitcairn Islands"], ["PR", "Puerto Rico"], ["PS", "Palestinian Territories"], ["PT", "Portugal"], ["PW", "Palau"], ["PY", "Paraguay"], ["QA", "Qatar"], ["RE", "Réunion"], ["RO", "Romania"], ["RS", "Serbia"], ["RU", "Russia"], ["RW", "Rwanda"], ["SA", "Saudi Arabia"], ["SB", "Solomon Islands"], ["SC", "Seychelles"], ["SD", "Sudan"], ["SE", "Sweden"], ["SG", "Singapore"], ["SH", "St. Helena"], ["SI", "Slovenia"], ["SJ", "Svalbard & Jan Mayen"], ["SK", "Slovakia"], ["SL", "Sierra Leone"], ["SM", "San Marino"], ["SN", "Senegal"], ["SO", "Somalia"], ["SR", "Suriname"], ["SS", "South Sudan"], ["ST", "São Tomé & Príncipe"], ["SV", "El Salvador"], ["SX", "Sint Maarten"], ["SY", "Syria"], ["SZ", "Swaziland"], ["TC", "Turks & Caicos Islands"], ["TD", "Chad"], ["TF", "French Southern Territories"], ["TG", "Togo"], ["TH", "Thailand"], ["TJ", "Tajikistan"], ["TK", "Tokelau"], ["TL", "Timor-Leste"], ["TM", "Turkmenistan"], ["TN", "Tunisia"], ["TO", "Tonga"], ["TR", "Turkey"], ["TT", "Trinidad & Tobago"], ["TV", "Tuvalu"], ["TW", "Taiwan"], ["TZ", "Tanzania"], ["UA", "Ukraine"], ["UG", "Uganda"], ["UM", "U.S. Outlying Islands"], ["US", "United States"], ["UY", "Uruguay"], ["UZ", "Uzbekistan"], ["VA", "Vatican City"], ["VC", "St. Vincent & Grenadines"], ["VE", "Venezuela"], ["VG", "British Virgin Islands"], ["VI", "U.S. Virgin Islands"], ["VN", "Vietnam"], ["VU", "Vanuatu"], ["WF", "Wallis & Futuna"], ["WS", "Samoa"], ["YE", "Yemen"], ["YT", "Mayotte"], ["ZA", "South Africa"], ["ZM", "Zambia"], ["ZW", "Zimbabwe"]]
Thank you in advance.
With sort and the shorthand arguments you can order the second element in your 2D array like this:
let sortedAfterCountryNames = prefixCodes.sort{ $0[1] < $1[1] }
print(sortedAfterCountryNames)
// [["AF", "Afghanistan"], ["AL", "Albania"], ["DZ", "Algeria"], ["AS", "American Samoa"], ...
Hope this will help you.
let sortedArray = prefixCodes.sort { (first, second) -> Bool in
return first.last < second.last
}
You should use the sort method to sort your array.
Let's first create an unsorted array:
var arr = [["A", "Hello world"],
["C", "Bye world"],
["B", "idk what to say here"]]
Now let's look at what arguments the sort method needs. Apparently it needs a closure of the following signature:
([String], [String]) -> Bool
The most straightforward (but not so swifty) approach would be to write a function with that signature:
func myFunction (first: [String], second: [String]) -> Bool {
}
In that function, you need to decide whether the algorithm should swap the two arguments. If it should not, return true, otherwise false. I think if you want to sort in alphabetical order, you should just compare the two strings
return first[1] < second[1]
You access the element at index 1 because that is where you store the country names, right?
Then, call sort with the function
arr = arr.sort(myFunction)
However, that is not very swifty. To make this the most swifty, you can do this:
arr.sort {
$0[1] < $1[1]
}
Much better!
You may do the following:
prefixCodes.sort { $0[1] < $1[1] }
But to be safer, I think that you should define a Country struct like this:
struct Country {
let code: String
let name: String
init(_ code: String, _ name: String) {
self.code = code
self.name = name
}
}
let countries = [Country("AD", "Andorra"), Country("AE", "United Arab Emirates"), Country("BQ", "Caribbean Netherlands")]
print(countries.sort { $0.name < $1.name })
So that if you want to add more details to your countries, you will not have a chance to break your sort closure.
Or if you want to keep things simple but still enforce strong typing, you could use tuples:
let countries = [("AD", "Andorra"), ("AE", "United Arab Emirates"), ("BQ", "Caribbean Netherlands")]
print(countries.sort { $0.1 < $1.1 })
If you mix different tuple lengths in your array:
let countries = [("AD", "Andorra"), ("toto"), ("tata", "titi", "tutu")]
Swift will return this error:
error: type of expression is ambiguous without more context