2015-05-31 16 views
6

Qualche idea perché non riesco a ottenere l'indice di un oggetto che sono sicuro esiste nell'array? Invece, mi sto nullo ..NSArray indexOfObject restituito nil

(lldb) po newItem 
<ReceiptItem: 0x16a428b0> 

(lldb) po self.items 
<__NSArrayM 0x169bf0e0>(
<ReceiptItem: 0x16a428b0> 
) 

(lldb) po [self.items indexOfObject:newItem] 
<nil> 

Grazie

+1

'' indexOfObject' manda isEqual' a tutti gli oggetti nella matrice fino a quando uno 'isEqual' restituisce' true'. Potrebbe essere possibile che "ReceiptItem" sovrascriva "isEqual" e restituisca sempre "false" - quella classe scritta da te o da qualcun altro che potrebbe averlo fatto? – luk2302

+0

@ luk2302 Interessante, lo verificherò – Yossi

+0

@ Yossi come "luk" chiesto è quella classe scritta da te? o cosa ? – Omarj

risposta

11

-indexOfObject: restituisce un intero di tipo NSUInteger, non un riferimento a un oggetto. Pertanto non è necessario utilizzare il comando debugger po (oggetto di stampa), ma p.

Restituisce 0, non nil, il che significa che ha trovato l'oggetto nella prima posizione dell'array. Se non trova l'oggetto, -indexOfObject: restituirà NSNotFound.

L'indice più basso il cui valore di matrice corrispondente è uguale a un oggetto. Se nessuno degli oggetti nell'array è uguale a anObject, restituisce NSNotFound.

1

provare a fare questo

(lldb) p (NSUInteger)[self.items indexOfObject:newItems];