objectAtIndex是以1而不是0开头的吗?我使用objectAtIndex,并传递数据0,但它表示这是出界的.所以,我想这是从1开始,我是对的吗?
有人能告诉我为什么我的应用程序在这里崩溃了吗?
以及当我用NSString值替换YES对象时它为什么不崩溃?
我想要做的就是将布尔数据存储到数组中并稍后修改这些数据,有人可以告诉我如何做到这一点吗?
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray* arr = [[NSMutableArray alloc] initWithObjects:YES, YES, YES, YES, nil];
NSLog([arr objectAtIndex:1]);
}
Run Code Online (Sandbox Code Playgroud) 在询问这个问题之前,我已经阅读了很多SO帖子,我猜这个答案就在那里,但我没有看到.我是Objective-C的新手,我正试图做一个(看似)简单的动作,我无法弄明白.
一般的想法是我有一个NSArray充满对象(特别是类型UIImageView).我想要复制那个数组,我已经做了很多种方式(都成功了).
复制后,我现在有两个数组.我想修改一个对象,比如索引2,只在副本中修改.
到目前为止似乎,因为副本只是复制引用(或指针),更改索引2处的对象将在副本和原始文件中更改它.
那有意义吗?
NSArray *originalArray = @[object1, object2];
Run Code Online (Sandbox Code Playgroud)
我尝试复制这个数组的方式,以便我可以实现我想要的:
NSMutableArray *originalArrayCopy = [NSMutableArray arrayWithArray:originalArray];
NSArray *originalArrayCopy = [originalArray copy];
NSMutableArray *originalArrayCopy = [[NSMutableArray alloc] initWithArray:originalArray];
Run Code Online (Sandbox Code Playgroud)
并且似乎在每种情况下,从副本修改对象也会在原始对象中修改它.
注意:虽然NSArray显然是不可变的,但我原始数组中的对象是可变的.
我有一个NSObject属性如下
@property (nonatomic, retain) NSString * destinationid;
@property (nonatomic, retain) NSString * destinationname;
@property (nonatomic, retain) NSString * assetid;
@property (nonatomic, retain) NSString * assetname;
@property (nonatomic, retain) NSString * assetdescription;
Run Code Online (Sandbox Code Playgroud)
在这里,我将其保存在NSMutableArray中.
我从服务器获取的数据包含相同的DestinationName,但不同的其他属性.
我想检查一下,如果已经将相同的Object名称添加到NSMutableArray中,请不要再添加它.
我尝试使用内置循环,但没有用:(
谢谢
我已经实现了一个应用程序,我在其数据源和委托的帮助下使用NSTableview我没有使用NSArrayController,也不想使用它.我的问题是如何在这种情况下将NSSearchField与我的NSTableView绑定?我使用NSArrayController看到了很多答案.我不想将实现转换为NSArrayController,因为NSMutableArray的工作正常.
我有一系列字符串,我已经在我的uitableview中显示了.
当我的uitableview启用了编辑时,我正在尝试将一个字符串从第4行移动到第3行,当我调试此代码时,我在代码的索引部分插入对象中获得EXC_BAD_ACCESS.
[myStringsArray insertObject:name atIndex:toIndexPath.row];
Run Code Online (Sandbox Code Playgroud)
但是,如果我不调试,只是构建和运行,我打印以下行,然后它崩溃而没有在我的控制台中看到EXC_BAD_ACCESS.
NSLog(@"re-ordered myStringsArray array");
Run Code Online (Sandbox Code Playgroud)
这是我的moveRowAtIndexPath方法的所有代码:
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *path = [documentsDirectoryPath stringByAppendingPathComponent:@"MyStrings.plist"];
//re-order array
NSString *name = [myStringsArray objectAtIndex:fromIndexPath.row];
[myStringsArray removeObjectAtIndex:fromIndexPath.row];
[myStringsArray insertObject:name atIndex:toIndexPath.row];
NSLog(@"re-ordered myStringsArray array");
if([myStringsArray writeToFile:path atomically: YES]){NSLog(@"write succesful");}
else {NSLog(@"write failed");}
[myTable reloadData];
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它认为我试图访问不存在的东西?
纠正我,如果我错了,但我的可变数组已经分配,如果删除方法有效,为什么插入方法不起作用?
谢谢
我在用户定义的方法中声明了一个数组.我使用此数组来存储从sqlite数据库返回的值.然后我使用该值进行进一步处理......但Xcode在数组声明中给出了以下警告."永远不会读取初始化期间存储的值"这是我的代码:
NSMutableArray *tempId=[NSMutableArray array];
NSString *sqlStr1=[NSString stringWithFormat:@"select deck_id from decksTable limit '%d' offset '%d'",1,deckID-1];
char *sql1 = (char*)[sqlStr1 UTF8String];
tempId=[appDelegate.dbConnection fetchColumnFromTable:sql1 col:0];
NSNumber *tempint1 =[tempId objectAtIndex:0];
int actualDeckID=[tempint1 intValue];
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题.
注意dbConnection是数据库连接对象,fetchColumnFromTable是用户定义的方法,它返回从数据库获取的值数组.然后我得到NSNumber中的第一个值并将其转换为整数以在我的代码中使用它.我在tempId数组的声明中获得了上述警告.
当你通过会发生什么nil来arrayWithArray:?
假设我有以下代码:
NSMutableArray *myArray = [NSMutableArray arrayWithArray:someOtherArray];
如果someOtherArray碰巧是nil,将myArray是nil或将是一个空的可变数组?
我正在解析json数据,并将它们存储到一个NSMutableArray.对于每个数据,参数如下格式,
{
"id":"6",
"username":"biju",
"password":"biju123",
"usertype":"2",
"first_name":"biju",
"last_name":null,
"email":"b@b.com",
"blocked":"N",
"created":"2012-11-02 16:03:19",
"image":"http:\/\/192.168.1.254\/eatthos\/assets\/upload\/users\/1351852399_thumb.jpg","thumb_image":"1351852399_thumb.jpg",
"menu_image":"0",
"thumb_menu_image":"0",
"city":"njdfh",
"favorite_food":"kafh",
"favorite_restaurant":"kafdhj",
"phone_number":"0",
"description":"0",
"token":"Dwx0DG",
"fb_unique_id":null,
"account_type":"normal",
"twitter_id":null,
"followers":"5",
"follow":"N"
}
Run Code Online (Sandbox Code Playgroud)
我正在解析大约100K的数据,该数组的大小(内存)是多少?如果我将它用于iPhone应用程序,它会是一个内存问题吗?
在我的应用程序中,我正在访问并从多个线程更改可变数组.一开始它在我尝试访问一个对象时崩溃objectAtIndex,因为索引超出了界限(该索引处的对象已经从另一个线程中的数组中删除).我在互联网上搜索了如何解决这个问题,我决定尝试这个解决方案.我创建了一个带有NSMutableArray属性的类,请参阅以下代码:
@interface SynchronizedArray()
@property (retain, atomic) NSMutableArray *array;
@end
@implementation SynchronizedArray
- (id)init
{
self = [super init];
if (self)
{
_array = [[NSMutableArray alloc] init];
}
return self;
}
-(id)objectAtIndex:(NSUInteger)index
{
@synchronized(_array)
{
return [_array objectAtIndex:index];
}
}
-(void)removeObject:(id)object
{
@synchronized(_array)
{
[_array removeObject:object];
}
}
-(void)removeObjectAtIndex:(NSUInteger)index
{
@synchronized(_array)
{
[_array removeObjectAtIndex:index];
}
}
-(void)addObject:(id)object
{
@synchronized(_array)
{
[_array addObject:object];
}
}
- (NSUInteger)count
{
@synchronized(_array)
{
return [_array count];
}
}
-(void)removeAllObjects …Run Code Online (Sandbox Code Playgroud) nsmutablearray ×10
objective-c ×7
iphone ×3
ios ×2
nsarray ×2
boolean ×1
cocoa ×1
cocoa-touch ×1
crash ×1
ios4 ×1
json ×1
macos ×1
memory-leaks ×1
nsstring ×1
nstableview ×1
uitableview ×1
xcode ×1