[英]iOS Cocoa NSArrayI length]: unrecognized selector sent to instance
[英][__NSArrayI length]: unrecognized selector sent to instance
我試圖將數據從集合視圖控制器傳遞到表視圖控制器,但是當我認為一切正常時,就會出現此問題。. 無法識別的選擇器發送到實例我的代碼是這樣的:
ViewController.m(集合視圖控制器)
#import "ViewController.h"
#import "ColViewCell.h"
#import "DetailViewController.h"
@interface ViewController ()
{
// Private member varibles
NSArray *_arrayOfImages;
NSArray *_arrayOfNames;
// Array de ingredientes
NSArray *_arrayOfCeviche;
NSArray *_arrayOfTacacho;
NSArray *_arrayOfAnticucho;
NSArray *_arrayOfPapita;
NSArray *_arrayOfParihuela;
NSArray *_arrayOfLomo;
NSArray *_arrayOfIngredients;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Array que contiene los titulos
_arrayOfNames = @[@"Anticucho", @"Arroz Chaufa", @"Cebiche", @"Pachamanca", @"Papa a la Huancaina", @"Parihuela", @"Picante de cuy", @"Tacacho con cecina", @"Pollo a la brasa", @"Lomo saltado"];
// Array que contiene las imagenes
_arrayOfImages = @[@"Anticucho.jpg", @"chaufa.jpg", @"ceviche.jpg", @"pachamanca.jpg", @"papita.jpg", @"parihuela.jpg", @"cuy.jpg", @"tacacho.jpg", @"brasa.jpg", @"lomo.jpg"];
// Arrays que de los ingredientes
_arrayOfCeviche = @[@"Quesito", @"Limon", @"Choclito", @"Cocinita", @"La lechesita", @"La miradita", @"La weuabdita", @"La cagada", @"Ptm Toy Jodido XD", @"Que emoción", @"Wiiiiiii"];
_arrayOfLomo = @[@"Que novedada", @"jajajaja que buena", @"Lukita", @"losisisisi", @"maniserio", @"joder", @"joselet", @"lskadlkdl", @"bah"];
_arrayOfPapita = @[@"que buena!", @"csm!!", @"que genio!", @"novedades", @"que rico!!", @"coger delicisioso", @"Mffffff"];
_arrayOfParihuela = @[@"Un culaso", @"Chambon", @"Noveades", @"que hacer", @"asu macho", @"Espero que este bien", @"Así es la vida la chamba", @"Debo aprender mas!!"];
_arrayOfTacacho = @[@"Tacachin", @"Lalilinnn", @"Masinisn", @"Joder", @"Ojojoojojo", @"Lista hermosa!"];
_arrayOfAnticucho = @[@"Me encanta Objective-c", @"Hermosisimo", @"Me encanta xcode!", @"Que hermoso es esto", @"Debe ser un chambon total", @"jajajaja novedades", @"Lol supremo"];
***NSArray that contains all the arrays***
_arrayOfIngredients = @[_arrayOfCeviche, _arrayOfLomo, arrayOfAnticucho, _arrayOfParihuela, _arrayOfTacacho, _arrayOfPapita];
}
我將數據從集合視圖傳遞到表視圖的方法
// Method to pass data from a view to another view
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [[self.collectionView indexPathsForSelectedItems] objectAtIndex:0];
DetailViewController *dvc = [segue destinationViewController];
dvc.Titulos = [_arrayOfIngredients objectAtIndex:indexPath.item];
}
}
我的DetailViewController.h(表視圖控制器)
#import <UIKit/UIKit.h>
@interface DetailViewController : UITableViewController
@property (strong, nonatomic) NSString *Titulos;
@end
我的DetailViewController.m(表視圖控制器)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
***Xcode tell me this line is the problem...***
cell.textLabel.text = self.Titulos;
return cell;
}
我的代碼有什么問題??? u
dvc.Titulos = [_arrayOfIngredients objectAtIndex:indexPath.item];
如果_arrayOfIngredients
是一個包含多個NSArray對象的NSArray,則您正在將一個數組傳遞到Titulos對象中。
Titulos是一個NSString,所以當一個UILabel嘗試訪問- length
上的NSString財產Titulos是一個NSArray而不是一個的NSString會發生崩潰。
在您的DetailViewController上,我假設您要從_arrayOfIngredients中傳遞一個子數組。
#import <UIKit/UIKit.h>
@interface DetailViewController : UITableViewController
@property (strong, nonatomic) NSArray *Titulos;
@end
然后,您必須像配置ViewController一樣配置DetailViewController,但要使用Titulos數組。
NSArray
不響應length
,它響應count
。 在以下行中:
dvc.Titulos = [_arrayOfIngredients objectAtIndex:indexPath.item];
您正在將NSArray
傳遞給采用NSString
的屬性,因此它有時會嘗試獲取字符串的長度,而是在NSArray
對象上調用length
方法,該方法對此沒有響應,因此崩潰。
驗證碼:
for (int j=0; j<enumKeyReferenceArray.count; j++) {
NSString *attri =[enumKeyReferenceArray valueForKey:@"BeltCondition"];
}
問題是我忘了告訴編譯器我需要從哪個索引元素開始。
正確的行應為:
NSString *attri =[enumKeyReferenceArray[j] valueForKey:@"BeltCondition"];
我有一個NSArray * dataArray來填充tableView
我使用的是什么原因
self.dataArray = [NSArray arrayWithObject:anotherArray];
我應該做的是
self.dataArray = [NSArray arrayWithArray:anotherArray]
因此,在您的情況下,您應該檢查dataArray中包含的內容
就我而言,問題是通過API數據傳入的數據是:
{
"status": true,
"message": "Order listed successfully.",
"data": [
{
"order_id": "9",
"restaurant_name": "Demo Restaurant",
"payment_token": "Test162R25892",
"payment_status": "Approved",
"subtotal": "480.00",
"final_amount": "561.00",
"vat": "57.00",
"service_fee": "24.00",
"delivery_fee": "0.00",
"discount": "0.00",
"customer_type": "member",
"created": "2016-02-28 12:17:21",
"order_status": "complete"
}
]
}
通過NSJSONSerialization轉換為NSDictionary之后,它是
{
data = (
{
created = "2016-02-28 12:17:21";
"customer_type" = member;
"delivery_fee" = "0.00";
discount = "0.00";
"final_amount" = "561.00";
"order_id" = 9;
"order_status" = complete;
"payment_status" = Approved;
"payment_token" = Test162R25892;
"restaurant_name" = "Demo Restaurant";
"service_fee" = "24.00";
subtotal = "480.00";
vat = "57.00";
}
);
message = "Order listed successfully.";
status = 1;
}
我只是想念JSON
的[和括號(在Dict中,在數據內部並像這樣解析)
lblDate.text = [[dict valueForKey:@"data"] valueForKey:@"created"]
發生異常是因為我試圖發送一個數組值來標記文本。 只需仔細查看要處理的數據即可。
就我而言,這是一個豆莢的問題。 固定與pod update
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.