0
votes

I am trying to debug this crash. It seems to be inside Apple's framework in description method but I don't know what it's causing it.

I'm using Restkit and Core Data. I get the crash as soon as the API returns a new model "Category" with array "products" empty.

Thank you

RRCategory + RRProduct models https://gist.github.com/imton/6f7ff91bc3f3ac25a490

Mappings https://gist.github.com/imton/33236e0ddefef0d50a35 https://gist.github.com/imton/9baa6a35a4a8f71aa440

Api Json https://gist.github.com/imton/118736e59c1a1092dc1b

{
"categories": [
    {
    "token": "6G1RKVMcfNdcbAX",
    "title": "Cat3",
    "picture_token": "ASDFASDF",
    "products": []
    }
]
}

Backstack

2014-12-07 10:55:30.838 Riderr[91164:34420246] -[__NSCFBoolean length]: unrecognized selector sent to instance 0x10375c970
2014-12-07 10:55:30.862 Riderr[91164:34420246] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFBoolean length]: unrecognized selector sent to instance 0x10375c970'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001034b1b75 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010314abb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001034b8c8d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x00000001034106fc ___forwarding___ + 988
    4   CoreFoundation                      0x0000000103410298 _CF_forwarding_prep_0 + 120
    5   CoreData                            0x0000000100d3135c -[NSManagedObject _descriptionValues] + 620
    6   CoreData                            0x0000000100d3195b -[NSManagedObject description] + 267
    7   Riderr                              0x000000010037393b -[NSManagedObject(FixCrashBug) description_swizzle] + 43
    8   CoreFoundation                      0x00000001034a3ea6 -[NSArray descriptionWithLocale:indent:] + 358
    9   Foundation                          0x00000001014f3524 _NSDescriptionWithLocaleFunc + 64
    10  CoreFoundation                      0x00000001033ac97d __CFStringAppendFormatCore + 9645
    11  CoreFoundation                      0x00000001034922f0 _CFStringCreateWithFormatAndArgumentsAux2 + 256
    12  Foundation                          0x00000001014f34b8 -[NSPlaceholderString initWithFormat:locale:arguments:] + 153
    13  Riderr                              0x00000001003ad29c +[DDLog log:level:flag:context:file:function:line:tag:format:] + 588
    14  Riderr                              0x0000000100373b6d __21-[RRHomeTableVC sync]_block_invoke + 205
    15  Riderr                              0x00000001003770be __72-[RRRiderrClient getAllCategoriesWithProductsSuccessBlock:failureBlock:]_block_invoke + 142
    16  Riderr                              0x000000010051b92b __66-[RKObjectRequestOperation setCompletionBlockWithSuccess:failure:]_block_invoke244 + 91
    17  libdispatch.dylib                   0x00000001041b4b06 _dispatch_call_block_and_release + 12
    18  libdispatch.dylib                   0x00000001041d2794 _dispatch_client_callout + 8
    19  libdispatch.dylib                   0x00000001041bb89b _dispatch_main_queue_callback_4CF + 949
    20  CoreFoundation                      0x0000000103419469 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    21  CoreFoundation                      0x00000001033dc36b __CFRunLoopRun + 2043
    22  CoreFoundation                      0x00000001033db906 CFRunLoopRunSpecific + 470
    23  GraphicsServices                    0x00000001076de9f0 GSEventRunModal + 161
    24  UIKit                               0x0000000101e901a0 UIApplicationMain + 1282
    25  Riderr                              0x0000000100370fbc main + 140
    26  libdyld.dylib                       0x0000000104207145 start + 1
    27  ???                                 0x0000000000000001 0x0 + 1
)
1
Please include the relevant code in the question rather than just having a list of links. You should also describe your model and show the associated classes (is there a mismatch)? - Wain
Hi @Wain There's not mismatch, all the properties are set to string. After a day of debugging, I could solve it but I do still not understand why it happens. It happens that the "token" property of each model is returning "0" when retrieved using valueForKey:"token". Then I found this article I read this article mikeabdullah.net/nsmanagedobject-method-kvc-clash.html and tried to and I tried to create a method for each model called (NSString*) isToken and the bug dissapered! .... - Gaston Morixe
.... I continued digging and I found that any other property like say "title" was being returned correctly with valueForKey. Also note that directly access product.token worked Ok, just not valueForKey. This was extremely weird and I think of changing the name of the token property to another productToken and categoryToken respectively. IT SOLVED THE PROBLEM and valueForKey is being returned successfully :| I still have no idea why token property can't be used. - Gaston Morixe

1 Answers

0
votes

It means that you give an NSNumber-wrapped Boolean to CoreData when it expects a string.

Then apparently you use method swizzling which is a pretty bad idea and may lead to such crashes.