Nil kehrte von einer Methode zurück, von der erwartet wird, dass sie einen Wert ungleich null zurückgibt - ios, objective-c, cocoa-touch

Ich implementiere UIKeyInput, UITextInputTraits, und UITextInput und damit musste ich Folgendes umsetzen:

- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return nil;
}

Bei der Analyse meines Projekts bekomme ich jedoch: "nil wurde von einer Methode zurückgegeben, von der erwartet wird, dass sie einen Nicht-Null-Wert zurückgibt".

Was wäre der richtige Weg, um das los zu werden? Soll ich einen Abbruch machen?

Antworten:

1 für die Antwort № 1

Komm nicht zurück nil. Wenn du keine hast UITextSelectionRects, die zurückgegeben werden sollen, geben ein leeres Array zurück.


3 für die Antwort № 2

Wenn Sie die Header-Quelle betrachten, hat die Methode tatsächlich NS_ASSUME_NONNULL_BEGIN Tag daran angehängt. Also kurz gesagt selectionRectsForRange wird zu einer Nicht-Null-Rückkehrmethode.

//
//  UITextInput.h
//  UIKit
//
//  Copyright (c) 2009-2017 Apple Inc. All rights reserved.
//

#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UITextInputTraits.h>
#import <UIKit/UIResponder.h>

...

NS_ASSUME_NONNULL_BEGIN  // <--- HERE!
..
- (CGRect)firstRectForRange:(UITextRange *)range;
- (CGRect)caretRectForPosition:(UITextPosition *)position;
- (NSArray *)selectionRectsForRange:(UITextRange *)range NS_AVAILABLE_IOS(6_0);

Sie können also weder null noch null zurückgeben. Liefern Sie stattdessen ein leeres Array wie folgt zurück:

- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
return @[];
}

Verwandte Fragen
Speisekarte