我相信我的问题涉及指针,这是我经常讨论的一个概念,但这就是我想要做的事情.
我有六个NSArrays.我想要一个由这六个数组组成的额外NSArray,所以:
self.arr1 = [NSArray array];
self.arr2 = [NSArray array];
self.arr3 = [NSArray array];
self.arr4 = [NSArray array];
self.arr5 = [NSArray array];
self.arr6 = [NSArray array];
NSArray *containerArray = [[NSArray alloc] initWithObjects:self.arr1, ... etc, nil];
Run Code Online (Sandbox Code Playgroud)
每当我更新前6个NSArray中的一个时,我希望在containerArray中更新对象.(我知道我使用的是NSArray而不是NSMutableArray,当我更新数组时,我创建了一个新数组并将其分配给实例变量).
目前,对arr1的任何操作都不会反映在[containerArray objectAtIndex:0]中.
我有一个数组,我试图检查是否存在indexPath(.row).
我用这个代码:
if ([array containsObject:[NSNumber numberWithInt:indexPath.row]]){
NSLog(@"Yep, it exists in there.");
}
Run Code Online (Sandbox Code Playgroud)
数组由数字3,8和2组成.索引路径在循环中加载从0到8的数字.
任何人都可以看到为什么这样做不起作用?
我有以下代码:
self.itemsCopy = [self.items mutableCopy];
//[self.itemsCopy addObjectsFromArray:self.items];
NSLog(@"------- BEFORE APPEND --------");
NSLog(@"items count: %d",[items count]);
NSLog(@"itemsCopy count: %d",[itemsCopy count]);
Run Code Online (Sandbox Code Playgroud)
我的结果是:
------- BEFORE APPEND --------
items count: 15
itemsCopy count: 15
Run Code Online (Sandbox Code Playgroud)
但是,如果我将第一行从mutableCopy更改为addObjectsFromArray:
[self.itemsCopy addObjectsFromArray:self.items];
Run Code Online (Sandbox Code Playgroud)
我的新结果是:
------- BEFORE APPEND --------
items count: 15
itemsCopy count: 0
Run Code Online (Sandbox Code Playgroud)
为什么mutableCopy会填充itemsCopy,但是addObjectsFromArray却没有?
为什么在下面的代码中,我不能简单地创建一个NSNumbers的静态数组?我只会使用C数组和整数,但那些无法复制,正如你在init()中看到的那样,我必须将数组复制到另一个数组.我收到的错误是"初始化元素不是常数".这很混乱; 考虑到我没有任何地方的const关键字,我甚至不确定这意味着什么.
另外,作为旁注,getNextIngredient方法给出了错误"不能将对象用作方法的参数"和"返回不兼容的类型",但我不知道为什么.
这是代码:
// 1 = TOMATO
// 2 = LETTUCE
// 3 = CHEESE
// 4 = HAM
#import "Recipe.h"
@implementation Recipe
// List of hardcoded recipes
static NSArray *basicHam = [[NSArray alloc] initWithObjects:[[NSNumber alloc] numberwithInt:1], [[NSNumber alloc] numberwithInt:2], [[NSNumber alloc] numberWithInt:3], [[NSNumber alloc] numberwithInt:4]];
// Upon creation, check the name parameter that was passed in and set the current recipe to that particular array.
// Then, set nextIngredient to be the first ingredient of that recipe, so …Run Code Online (Sandbox Code Playgroud) 我正在尝试将NSArray保存为NSMutableDictionary中的值.当我尝试获取我添加的内容时,它返回NSFCArray而不是NSArray:
NSArray * list = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSMutableDictionary * dictionary = [[NSMutableDictionary alloc] init];
for (NSString *name in list) {
// first attempt
[dictionary setObject:[NSMutableArray arrayWithObject:@"test"] forKey:name];
NSLog(@"first attempt class: %@", [[dictionary valueForKey:name] class]);
// second attempt
NSArray * realArray = [[NSArray alloc] initWithArray:[dictionary valueForKey:name]];
NSLog(@"second attempt class: %@", [realArray class]);
}
Run Code Online (Sandbox Code Playgroud)
我认为这是为了提高效率.但是,我需要将我的值作为NSArray返回,以调用NSFCArray没有的"count"方法.如果我不能将值存储在字典中作为NSArray,我如何从NSFCArray转换为NSArray?
NSArray的addObject方法是否保证保持顺序?因此,如果我添加一个object1然后添加object2然后打印它们,它们是否总是按顺序排列?这对于NSDictionary allValues数组也是如此吗?
嗨我的NSArray包含这样的重复项(我必须删除重复项)
标题:父亲节
标题:父亲节
标题:父亲节
标题:选举日
标题:选举日
标题:选举日
标题:复活节
标题:复活节
标题:地球日
标题:地球日
标题:地球日
标题:Cinco de Mayo
标题:Cinco de Mayo
标题:Cinco de Mayo
标题:平安夜
标题:平安夜
标题:平安夜
标题:圣诞节标题:圣诞节标题:圣诞节
我只保留一个名字,不需要其他副本.我怎么做这个请指导我一点清楚解释,解决这个问题.谢谢.
我在a中有一个表UIPopoverController,viewDidAppear我检查了存储在standardUserDefaults中的单元格标签的值.(所以我可以使用最后选择的选项).
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *lastMenu = [prefs objectForKey:@"location"];
NSUInteger index = [__menuTitles indexOfObject:lastMenu];
NSLog(@"lastMenu is %@",lastMenu);
NSLog(@"lastMenu index is %i",index);
Run Code Online (Sandbox Code Playgroud)
在第一次激活菜单时生成此选项
lastMenu is
lastMenu index is 0
Run Code Online (Sandbox Code Playgroud)
后续点击正确报告2147483647的含义 NSNotFound
lastMenu is
lastMenu index is 2147483647
Run Code Online (Sandbox Code Playgroud)
为什么0第一次返回?
这是阵列
__menuTitles = [[NSArray alloc] initWithObjects:
@"North America",
@"Western Europe",
@"Asia Pacific",
@"Latin America",
@"Central & Eastern Europe",
@"Middle East",
@"Africa",
nil];
Run Code Online (Sandbox Code Playgroud) 我有一个自定义类MDRect,我正在尝试添加NSMutableArray
数组是属性:
@property (retain) NSMutableArray* array;
Run Code Online (Sandbox Code Playgroud)
它在NSView子类的initMethod中初始化:
-(id)init {
array = [NSMutableArray new];
return [super init];
}
Run Code Online (Sandbox Code Playgroud)
然后我试图在这里添加一个对象:
-(void)mouseUp:(NSEvent *)theEvent
{
NSPoint mouseLoc = [NSEvent mouseLocation];
mouseLoc = [self mouse:mouseLoc inRect:[self frame]];
CGSize temp;
NSLog(@"%f",mouseLoc.y - mouseLocation.y);
NSLog(@"%f",mouseLoc.x - mouseLocation.x);
temp.height = mouseLoc.y - mouseLocation.y;
temp.width = mouseLoc.x - mouseLocation.x;
tempRect.size = temp;
MDRect * rect = [[MDRect alloc] initWithColor:[NSColor orangeColor] andRect:tempRect];
[array addObject:rect];
int i = (int)array.count;
NSLog(@"%i",i);
[self setNeedsDisplay:YES];
}
Run Code Online (Sandbox Code Playgroud)
但是没有将对象添加到数组中.它永远不会返回NSLog函数中除0以外的任何值.我究竟做错了什么?
我有一个名为[self.places objectAtIndex:indexPath.row]的数组; 我试图输出到表中.数组中充满了对象,但是我想使用对象内部的数据,将它们分配给对象的最佳方法是什么?数组内部的数据如下:
<Place:eXMSFqDg7B> {
Location = "<PFGeoPoint: 0x6887480>";
addressline1 = "address line 1";
addressline2 = "address line 2";
agerestrictions = "18+";
email = "test@aol.com";
image = "<PFFile: 0x6887af0>";
name = "Rain NightClub";
phone = 0123456789;
postcode = BT11TG;
type = Club;
}
2012-04-17 00:29:59.501 ClubsNIparse[3517:f803] <Place:95KvPCrSY1> {
Location = "<PFGeoPoint: 0x6888330>";
addressline1 = "address line 1";
addressline2 = "address line 2";
agerestrictions = "18+";
email = "test@aol.com";
image = "<PFFile: 0x6888950>";
name = "Box NightClub";
phone = 0123456789;
postcode …Run Code Online (Sandbox Code Playgroud) nsarray ×10
objective-c ×7
cocoa ×4
iphone ×4
ios ×2
nsdictionary ×2
nsnumber ×2
arrays ×1
cocoa-touch ×1
nsindexpath ×1
pointers ×1
xcode ×1