我在这里遇到一个难题,不管感谢,我的意思是任何帮助=)
我是一名经验丰富的开发人员,我是Objective-C/iPhone/Cocoa的新手.
我想创建一个类控制器,我可以将NSMutableArray作为参数传递.
然后,我们有:
selTimeIntController = [[SingleSelectPickerViewController alloc] initWithSettings: listOfIntervals :kAlarmIntervalStr :myDataHolder.alarmInterval];
[self.navigationController pushViewController: selTimeIntController animated: YES];
[selTimeIntController release];
Run Code Online (Sandbox Code Playgroud)
这个listOfIntervals是一个已经是alloc/init的NSMutableArray*.
在我的SingleSelectPickerViewController上,我们有:
-(id)initWithSettings:(NSMutableArray*)sourceArray :(NSString*)viewCurrentValue :(NSString*)viewTitle {
if(self = [self initWithNibName: kNibName bundle: [NSBundle mainBundle]]) {
listOfIntervals = [NSMutableArray arrayWithArray: (NSMutableArray*)sourceArray];
currentValue = [[NSString alloc] initWithString: viewCurrentValue];
title = [[NSString alloc] initWithString: viewTitle];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
通过调试,我能够在SingleSelectPickerViewController上看到我的listOfIntervals.
这里我们有SingleSelectPickerViewController'dealloc:
- (void)dealloc {
[super dealloc];
[listOfIntervals release];
[currentValue release];
[title release];
}
Run Code Online (Sandbox Code Playgroud)
但是,每次我实例化我的SingleSelectViewController时,我都会收到一个带有以下堆栈的EXEC_BAD_ADDRESS:
#0 0x96132688 in objc_msgSend ()
#1 0x00003ee2 in -[SingleSelectPickerViewController tableView:numberOfRowsInSection:] …Run Code Online (Sandbox Code Playgroud) 我有一个NSMutableArray,它包含我系统上的所有日历(作为CalCalendar对象):
NSMutableArray *calendars = [[CalCalendarStore defaultCalendarStore] calendars];
我想从标题不包含字符串的calendars任何CalCalendar对象中删除@"work".
我试过这个:
for (CalCalendar *cal in calendars) {
// Look to see if this calendar's title contains "work". If not - remove it
if ([[cal title] rangeOfString:@"work"].location == NSNotFound) {
[calendars removeObject:cal];
}
}
Run Code Online (Sandbox Code Playgroud)
控制台抱怨说:
*** Collection <NSCFArray: 0x11660ccb0> was mutated while being enumerated.
事情变坏了.显然你似乎不能做我想做的事情所以有人能建议最好的方法吗?
谢谢,
我有以下情况,我NSMutableArray填写了一个xml我想搜索的文件.当我在搜索字段中输入内容时出现此错误:
-[NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x5b388b0
Run Code Online (Sandbox Code Playgroud)
它意味着什么,我该如何解决?
我想错误就在这附近.
- (void)searchTableView{
searchedList = [[NSMutableArray alloc] init];
NSLog(@"new list %@", searchedList);
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (NSDictionary *dictionary in list) {
NSArray *array = [dictionary objectForKey:@"TITLE"];
[searchArray addObjectsFromArray:array];
}
for (NSString *TempArray in searchArray) {
NSRange titleResults = [TempArray rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResults.length > 0)
[searchedList addObject:TempArray];
}
[searchArray release];
searchArray = nil;
}
Run Code Online (Sandbox Code Playgroud) 我已经使用本教程创建了一个带有使用NSMutableArray填充的表视图的应用程序.现在我想添加功能,以便向阵列添加其他项目并保存/加载它们.我已经将Fruit类定制为如下所示:
#import <UIKit/UIKit.h>
@interface Fruit : NSObject {
NSString *name;
NSString *instructions;
NSString *explination;
NSString *imagePath;
}
@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *instructions;
@property(nonatomic,copy) NSString *explination;
@property(nonatomic,copy) NSString *imagePath;
- (id)initWithName:(NSString*)n instructions:(NSString *)inst explination:(NSString *)why imagePath:(NSString *)img;
@end
Run Code Online (Sandbox Code Playgroud)
和Fruit.m文件:
#import "Fruit.h"
@implementation Fruit
@synthesize name,instructions,explination,imagePath;
- (id)initWithName: (NSString*)n instructions:(NSString*)inst explination:(NSString *)why imagePath:(NSString *)img {
self.name = n;
self.instructions = inst;
self.explination = why;
self.imagePath = img;
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
这很好用,我可以加载两个textview和一个imageView,而不只是一个textview.但是,我将如何保存用户创建的任何新项目,并在应用程序再次启动时加载它们(如果存在)?
关于我应该使用哪两个,我处于两难境地.我将通过一个宁静的API检索一组数据(返回json),我不知道在我在UI视图表上显示它之前应该如何存储它们.
例如.
{"Events":[{"Id":5,"Name":"Event 1 2013"},{"Id":6,"Name":"Event 2 2013"}]}
Run Code Online (Sandbox Code Playgroud)
我一直在阅读教程,有些人会使用NSMutableArrays而有些人会使用NSMutableDictionary.
我该怎么办呢?
顺便说一句:我在UI视图表上显示数据,在点击时会将用户重定向到另一个页面,如果他们决定返回则必须显示上一个视图而不重新加载(使用UinavigationController)
谢谢!
编辑:
另外,只是为了让您了解我正在尝试做什么.我正在尝试按照本教程将我分成的数据拆分为节标题.在本教程中,它使用的是NSDictionary.
如果我使用NSArray,会影响性能吗?
我有一个NSMutableArray在ViewController我的UITableView定义的数据源,如下所示:
NSMutableArray *messageArray;
Run Code Online (Sandbox Code Playgroud)
我有一个方法来重新加载tableView数据,在此之前,我想清除现有的表数据.
如果我使用以下代码:
[messageArray removeAllObjects];
[self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
2013-02-12 14:20:30.378 appname [20998:907] *由于未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:' - [__ NSCFArray removeObjectAtIndex:]:发送到immutable对象的mutating方法'* First throw call stack: (0x3939e3e7 0x35dd6963 0x3939e307 0x393200e7 0x392eb5e5 0x7cda3 0x3a236047 0x3a2360d1 0x3a236047 0x3a235ffb 0x3a235fd5 0x3a23588b 0x3a235d79 0x3a15e5c9 0x3a14b8b1 0x3a14b1bf 0x336305f7 0x33630227 0x393733e7 0x3937338b 0x3937220f 0x392e523d 0x392e50c9 0x3362f33b 0x3a19f291 0x79c11 0x39be4b20)的libc ++ abi.dylib:终止称为抛出异常
但是,如果我使用以下代码,它的工作原理.
NSMutableArray *emptyArray = [NSMutableArray new];
messageArray = emptyArray;
[self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)
为什么我收到错误removeAllObjects?这可能是罪魁祸首吗?
NSMutableDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil];
messageArray …Run Code Online (Sandbox Code Playgroud) 我正在尝试检查视图控制器列表self.navigationController.viewControllers.
NSMutableArray *arrayOfControllers = [[NSMutableArray alloc] initWithObjects:self.navigationController.viewControllers, nil];
Run Code Online (Sandbox Code Playgroud)
作为示例,这将返回如下数组:
array -- (
(
"<HomeViewController: 0xb1aca10>",
"<LeftMenuViewController: 0xe751520>"
)
)
Run Code Online (Sandbox Code Playgroud)
我现在需要检查数组中是否存在HomeViewController我该怎么做?
我试过这样做,[arrayOfControllers containsObject:[MESHomeViewController class]])但这并不是真的.
uiviewcontroller nsmutablearray uinavigationcontroller nsarray ios
我读过的每一个类似的问题,但已经确定无论我在做一些愚蠢的事(可能),或者我不掌握NSArray方法containsObject:
我正在尝试设置UITableView包含已保存的"收藏夹"的内容; 保存为名为"MapAnnotations"的自定义类的位置.这包含坐标,标题,信息字段和其他一些参数.我成功地从一个NSUserDefaults实例保存/检索它,但似乎无法成功检测到我的重复对象NSMutableArray.
这是相关的代码:
-(void)doSetUp
{
//load up saved locations, if it exists
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
//if there are saved locations
if ([myDefaults objectForKey:@"savedLocations"]) {
NSLog(@"file exists!");
//get saved data and put in a temporary array
NSData *theData = [myDefaults dataForKey:@"savedLocations"];
//my custom object uses NSCode protocol
NSArray *temp = (NSArray *)[NSKeyedUnarchiver unarchiveObjectWithData:theData];
NSLog(@"temp contains:%@",temp);
//_myFavs currently exists as a NSMutableArray property
_myFavs = [temp …Run Code Online (Sandbox Code Playgroud) 我NSMutableArray喜欢这样:
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"0",@"0",@"0",@"0",@"0", nil];
Run Code Online (Sandbox Code Playgroud)
现在我想检查我的数组中的所有对象是否相同,等于0做某些工作!!! 但我不知道这个.请指导我.
nsmutablearray ×10
objective-c ×6
ios ×5
iphone ×2
nsarray ×2
xcode ×2
calendar ×1
cocoa ×1
cocoa-touch ×1
exception ×1
ios6 ×1
load ×1
memory-leaks ×1
save ×1
search ×1
uitableview ×1