我正在一个类中创建一个字典数组.我想将该数组的副本返回给要求它的任何其他对象.传递给其他对象的副本需要在不修改原始对象的情况下进行修改.
所以我在我的类的getter方法中使用以下内容来保存"master"数组:
[[NSMutableArray alloc] initWithArray:masterArray copyItems:YES];
Run Code Online (Sandbox Code Playgroud)
但是,这似乎使所有字典内部不可变.我怎么能避免这个?
我想我在这里遗漏了一些东西.任何帮助都感激不尽!
如何在运行时知道NSMutableArray中有多少个数组元素?
我有一个NSMutableArray可以容纳几个对象.我想检查是否存在对象,如果存在,则更改它.我想知道检查它.我认为这会奏效:
if ([[[self.myLibrary objectAtIndex:1] subObject] objectAtIndex:1]) // do something
Run Code Online (Sandbox Code Playgroud)
但是,如果索引1处没有任何子对象,则会崩溃.所以我猜问题是如果此索引中没有任何内容,则上述内容不会返回nil.
还有另一种简单的检查方法,还是我必须通过数组等计算?我知道stackoverflow上还有其他帖子,但我还没有找到一个简单的答案.
欢迎任何解释/建议.谢谢!
我正在尝试更新NSMutableArray中的对象.
Product *message = (Product*)[notification object];
Product *prod = nil;
for(int i = 0; i < ProductList.count; i++)
{
prod = [ProductList objectAtIndex:i];
if([message.ProductNumber isEqualToString:prod.ProductNumber])
{
prod.Status = @"NotAvaiable";
prod.Quantity = 0;
[ProductList removeObjectAtIndex:i];
[ProductList insertObject:prod atIndex:i];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
我来自Java背景,我正在学习Objective C.我正在尝试创建一个具有字符串数组和成员函数来修改数组的类.我的代码看起来像这样:
@implementation TAWChapter
@synthesize mSubject;
@synthesize mItems;
- (id) init{
self.mItems = [[NSMutableArray alloc] init];
return self;
}
- (void) setSubject:(NSString *)subject{
self.mSubject = subject;
}
- (void) addItem:(NSString *)item{
[self.mItems addObject:@"asdf"];
}
@end
Run Code Online (Sandbox Code Playgroud)
哪个没用.我得到了一个"[__NSArrayI addObject:]: unrecognized selector sent to instance "和一个"NSInvalidArgumentException".在互联网上搜索后,我将构造函数中的单行更改为:
self.mItems = [self.mItems init];
Run Code Online (Sandbox Code Playgroud)
它有效,但为什么呢?从Java开发人员的角度来看,第一个比第二个更有意义.我有另一条线,它与第一条线相同,但它正在工作(不在构造函数中).有人可以向我解释一下吗?
我有一个自定义对象,我创建了3个属性.我创建对象并将值分配给这些属性.之后我把那个物体放进去了NSMutable Array.我知道我可以用:
for (id obj in personArray)
{
NSLog(@"obj: %@", obj);
}
NSLog(@"%@", personArray);
Run Code Online (Sandbox Code Playgroud)
告诉我我的数组中有哪些对象.但是我希望更深入一些,我希望能够看到每个对象的属性.我只是不确定如何定位它们.
这是我正在使用的代码:Person是我的自定义对象.
personObject = [[Person alloc]init];
[personObject setFirstName:firstName.text];
[personObject setLastName:lastName.text];
[personObject setEmail:emailAddress.text];
// add the person object to the array
// the array was alloc and init in a method above this code.
[personArray addObject:personObject];
for (id obj in personArray)
{
NSLog(@"obj: %@", obj);
}
NSLog(@"%@", personArray);
Run Code Online (Sandbox Code Playgroud) 一个简单的Swift类有一个var array类型的字段.当类适应Objective-C时,字段类型公开为NSArray(不可变),而它应该是NSMutableArray(可变)
class Categoryy: NSObject {
var items = Array<Item>()
}Run Code Online (Sandbox Code Playgroud)
Classy swift类适用于Xcode生成的头文件MODULE_NAME-swift.h文件中的Objective-C,如下所示:
SWIFT_CLASS("_TtC8waiterio9Categoryy")
@interface Categoryy : NSObject
@property (nonatomic, copy) NSArray * items;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@endRun Code Online (Sandbox Code Playgroud)
是否有一种方法可以将var项:Array字段转换为Objective-c中的可变NSMutableArray?
我为iphone/iPad开发应用程序.我想要对存储在NSArray中的对象进行洗牌.有没有办法用objective-c来实现它?
我想创建一个ABRecordRef(s)数组来存储具有有效生日字段的联系人.
NSMutableArray* bContacts = [[NSMutableArray alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for( int i = 0 ; i < nPeople ; i++ )
{
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i );
NSDate* birthdayDate = (NSDate*) ABRecordCopyValue(ref, kABPersonBirthdayProperty);
if (birthdayDate != nil){
[bContacts addObject:ref];
}
}
Run Code Online (Sandbox Code Playgroud)
编译器显示此警告: 警告:传递'addObject:'的参数1'从指针目标类型中丢弃限定符 我在Web上搜索并发现我必须将ABRecordRef强制转换为ABRecord*以便能够存储在NSMutableArray中.
[bContacts addObject:(ABRecord*) ref];
Run Code Online (Sandbox Code Playgroud)
但似乎ABRecord不是iOS框架的一部分.现在我如何将ABRecordRef存储到NSMutableArray?
我刚刚进入Obj C,我正在寻找创建一个MKAnnotations数组.
我已经创建了一个名为MKAnnotation的类TruckLocation,它包含名称,描述,纬度和经度.
这是我到目前为止的数组:
NSMutableArray* trucksArray =[NSMutableArray arrayWithObjects: @[<#objects, ...#>] nil];
Run Code Online (Sandbox Code Playgroud) nsmutablearray ×10
objective-c ×9
ios ×4
iphone ×4
nsarray ×3
addressbook ×1
cocoa ×1
cocoa-touch ×1
copying ×1
ipad ×1
mkannotation ×1
swift ×1
xcode ×1
xcode6 ×1